초보리눅스

HOME > 초보리눅스
초보리눅스| 리눅스 초급자들을 위한 기초지식을 제공하는 곳입니다.
 
chsh (기본사용쉘, 로그인쉘 변경)
조회 : 14,119  


chsh

쉘(SHELL)이란 사용자가 입력한 명령어를 받아서 해석한 후에 리눅스 커널에게 전달하는 역할을 한다. 흔히 "쉘은 어떻게 생겼습니까?", "쉘은 어디에 있습니까?"라고 쉘에 대한 구체적인 형상을 제시해 달라는 질문을 많이 받습니다.

굳이 쉘(shell)을 보여달다고 한다면 흔히 리눅스로 로그인해서 볼 수 있는 쉘프롬프트(shell prompt)가 우리가 볼 수 있는 쉘의 모양 전부입니다. 하지만, 이것이 쉘(shell)의 전부는 아닙니다. 아주 극히 일부일 뿐입니다.

즉, 쉘(shell)은 우리 눈으로는 잘 볼 수 없지만, 우리가 입력한 명령어를 해석하여 리눅스 커널에 전달하는 역할을 하므로 커널(kernel)과 사용자(user) 사이에 존재하며 의사소통의 역할을 해주는 것이라고 할 수 있습니다.

쉘의 종류에는  /bin/bash,   /bin/sh,   /bin/ash,   /bin/bsh,   /bin/bash2, /bin/tcsh,  /bin/csh,    /bin/ksh,  /bin/zsh과 같은 것들이 있습니다.

리눅스의 기본쉘은 bash(Born Again SHell, "배시쉘"이라고 부름)이라고 하는 것입니다.

그런데 리눅스의 쉘에는 bash만 있는 것이 아니고 위의 종류를 보신바와 같이 sh(Born Shell), csh(C Shell), ksh(Korn Shell)등 여러가지가 있습니다.

따라서 여러가지 쉘중에서 사용자가 로그인했을 때 기본적으로 사용하는 쉘이 반드시 한개 지정이 되어 있으며 사용하는 도중에도 쉘의 변경이 가능합니다.

또한 로그인할때에 기본으로 사용할 쉘도 변경이 가능합니다.

chsh는 "CHange SHell"의 약어로서 사용자가 기본으로 사용하는 쉘의 종류, 즉 로그인시에 기본적으로 사용되는 쉘의 종류를 변경하고자 할 때에 사용하는 명령어입니다.

이 기본사용쉘은 /etc/passwd의 마지막 필드에 지정되어 있습니다.
chsh로 기본사용쉘을 변경하게 되면 /etc/passwd의 마지막 필드에 변경될 쉘이 바뀌게 됩니다.

사용예

먼저 /etc/passwd에서  bible이라는 사용자의 기본사용쉘을 확인합니다.

[bible@host1 bible]$ cat /etc/passwd | grep bible
bible:x:500:500:SungSoo:/home/bible:/bin/bash
[bible@host1 bible]$

위의 예는 bible이라는 사용자의 기본사용쉘인 /bin/bash를 확인한 것입니다.

 

그리고 chsh를 이용하여 bible이라는 사용자의 기본사용쉘을 변경한 것입니다.

[bible@host1 bible]$ chsh
Changing shell for bible.
Password:
New shell [/bin/bash]: /bin/csh
Shell changed.
[bible@host1 bible]$

위에서 bible이라는 사용자는 /bin/bash (Bash Shell)를 기본사용쉘로 사용하고 있었으나 /bin/csh (C shell)로 변경한 것입니다.  위의 예에서 보신바와 같이 자기자신의 사용쉘을 변경할 경우에도 자기자신의 패스워드를 입력해 주어야합니다.

이렇게 변경이 되고 난 이후 부터는 로그인 할때마다 Bash Shell 대신에 C Shell을 사용하게 될 것입니다. 

변경되고 난 이후에 변경전에 확인했던 바와 같이 /etc/passwd 파일에서 bible이라는 사용자의 기본사용쉘을 확인하였습니다.

[bible@host1 bible]$ cat /etc/passwd | grep bible
bible:x:500:500:SungSoo:/home/bible:/bin/csh
[bible@host1 bible]$

위의 결과를 보신바와 같이 bible이라는 사용자의 기본사용쉘이 /bin/bash (Bash Shell)에서 /bin/csh (C shell)로 변경되어 있는 것을 보실 수 있습니다.

다음과 같이 간단히 -s이라는 옵션을 사용하여 변경할 수도 있습니다.

[bible@host1 ~]$
[bible@host1 ~]$ chsh -s /bin/bash
Changing shell for bible.
Password:
Shell changed.
[bible@host1 ~]$

또한 다음과 같이 -l 이라는 옵션을 사용하시면 현재의 리눅스서버에서 사용자가 사용가능한 쉘(Shell)의 종류를 확인할 수 있습니다.

[bible@host1 ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/bash2
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
[bible@host1 ~]$

이것은 /etc/shelle 파일의 내용을 그대로 보여주는 것에 불과합니다.
다음의 예를 보시기 바랍니다.

[bible@host1 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/bash2
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
[bible@host1 ~]$

위의 두 결과가 같습니다.
즉, "chsh -l"이라는 명령어는 /etc/shells라는 파일에 있는 쉘의 종류를 표시해주는 명령어입니다.  따라서 /etc/shells에는 현재 리눅스 시스템에서 사용가능한 쉘의 종류가 들어 있습니다.

참고로 현재 사용중인 쉘을 확인하려면 "echo $SHELL"이라고 해보시면 됩니다. 즉 쉘환경변수인 "SHELL"에는 현재 사용중인 쉘의 종류가 저장되어 있습니다.

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

[bible@host1 bible]$ echo $SHELL
/bin/bash
[bible@host1 bible]$

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



저작권 :  수퍼유저코리아 (www.superuser.co.kr),   무단 재배포및 복사를 금합니다.


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1119


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
박성수
파파
헐렁고수