강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

기본사용쉘(로그인쉘)과 현재 사용중인 쉘에 대한 우리들의 오류

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

기본사용쉘(로그인쉘)과 현재 사용중인 쉘에 대한 우리들의 오류



이번에는 로그인후에 현재 여러 가지 쉘들을 사용해보는 예를 보도록 하겠습니다. 

 

 현재 사용중인 쉘을 확인하려면 "echo $SHELL"이라고 해보시면 됩니다. 

 

 즉 쉘환경변수인 "SHELL"에는 현재 사용자가 사용중인 쉘의 종류가 저장되어 있습니다. 

 

 다음은 현재 사용자가 사용중인 쉘의 종류를 확인한 것입니다. 

 

 

 

[bible@su249 ~]$ echo $SHELL

/bin/bash

[bible@su249 ~]$

 

현재 bible이라는 사용자는 /bin/bash , /bin/bash(Bash Shell)을 사용 중에 있습니다. 

 

 
만약 현재 사용중인 쉘을 변경하고자 한다면 다음과 같이 할 수 있습니다. 

 

 (지금까지 설명 드렸던 기본사용쉘의 변경과 현재 사용중인 쉘의 변경방법을 비교하십시오.)

 

[bible@host1 bible]$ echo $SHELL           (현재 사용중인 쉘확인)
/bin/bash
[bible@host1 bible]$
[bible@host1 bible]$ /bin/csh              (
현재 사용할 쉘은 C쉘로 변경)
[bible@host1 ~]$
[bible@host1 ~]$
[bible@host1 ~]$ /bin/sh                   (
현재 사용할 쉘을 Born 쉘로 변경)
sh-2.05b$
sh-2.05b$
sh-2.05b$ exit                            (
사용중인 쉘에서 빠져나옴, Born 쉘에서
                                           
빠져나옴, 빠져나온 다음은 C쉘상태임)
exit
[bible@host1 ~]$ exit                     (
사용중인 쉘에서 빠져나옴, C 쉘상태에서
                                          
빠져나옴, 빠져나온 다음은 Bash쉘 상태임)
exit
[bible@host1 bible]$


필자가 이 설명을 드리는 이유는 흔히 chsh라는 명령어가 사용중인 쉘을 변경하는 명령어라고 설명되는 경우가 종종 있기 때문입니다. 

 

 

이것은 잘못된 설명입니다. 

 

 chsh는 기본사용쉘을 변경하는 명령어이며 현재 사용중인 쉘을  일시적으로 변경하는 방법은 바로 위에서 설명 드린 바와 같습니다. 

 

 

리눅스 서버관리자 분들께서는 절대 혼동하지 마시고 누군가 chsh가 현재 사용중인 쉘을 변경하는 명령어라고 말한다면 이것은 잘못된 설명이므로 여러분들께서 바로 잡아주시기 바랍니다. 

 

 


다시 정리하여 강조하자면,,, 필자가 여기서 중요하게 설명 드리고자 하는 것은 기본사용쉘과 현재 사용중인 쉘의 구분입니다. 

 

 

리눅스의 수많은 책을 찾아보셔도 기본사용쉘과 현재 사용중인 쉘에 대해서 설명되어 있는 책은 없을 것입니다. 

 

 

필자는 기본사용쉘(로그인쉘)현재 사용중인 쉘의 구분이 굉장히 중요하다고 생각하기 때문에 잠깐 언급하도록 하겠습니다. 

 

 

chsh
기본사용쉘(로그인쉘)을 변경하는 명령어라고 말씀 드렸습니다. 

 

 즉 여러 가지 사용 가능한 쉘의 종류 중에서 단 한가지를 지정하여 로그인시에 기본으로 지정하여 사용되는 쉘이 기본사용쉘이며, /etc/passwd의 마지막 필드에 지정되어 있으며, 이 기본사용쉘을 변경할 수 있는 명령어가 chsh인 것입니다. 

 

 (물론, /etc/passwd파일을 직접 편집하셔도 됩니다. 

 

)

그렇다면 현재 사용중인 쉘이란 여러 가지 쉘중에서 현재 일시적으로 사용하고 있는 쉘을 의미하는 것입니다. 

 

 또한 현재 사용중인 쉘이 어떤 쉘인가를 확인하는 명령어가 위에서 설명드린 "echo $SHELL"입니다. 

 

 

 

또한 참고로 root사용자는 패스워드 입력 없이 모든 사용자의 로그인쉘(기본사용쉘)의 변경이 가능합니다. 

 

 다음의 예를 보시기 바랍니다. 

 

 

 

[root@host1 root]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
[root@host1 root]#
[root@host1 root]# chsh bible
Changing shell for bible.
New shell [/bin/bash]: /bin/csh
Shell changed.
[root@host1 root]#
[root@host1 root]# chsh bible2
Changing shell for bible2.
New shell [/bin/bash]: /bin/sh
Shell changed.
[root@host1 root]#

 

편법이겠지만, root권한에서 사용자의 기본사용쉘을 변경하고자 한다면 /etc/passwd의 마지막 필드 값을 변경해주어도 변경한 쉘이 적용이 됩니다. 

 

 

, vi /etc/passwd를 열어서

 

bible:x:500:500:SungSoo:/home/bible:/bin/bash

 

를 다음과 같이 변경해 주어도 적용이 된다는 의미입니다. 

 

 

 

bible:x:500:500:SungSoo:/home/bible:/bin/csh

 

이것은 시스템관리의 편법이므로 참고만 하시기 바랍니다. 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  212 명