리눅스 시스템의 이해 - 셸이란?

2022. 1. 24. 02:40리눅스마스터 1급 - 필기/리눅스 실무의 이해

셸(Shell)이란 사용자로부터 명령을 받으면 그것을 해석하고 프로그램을 해석하는 역할을 합니다. 

사용자가 시스템에 로그인을 하게 되면 각 사용자에게 설정된 셸이 부여되게 되고 사용자들은 부여된 셸을 통해 여러 다양한 명령들을 수행 할 수 있는 것입니다.

다시 말하면 로그인을 하더라도 셸이 부여되지 않으면 명령을 수행할 수 없게 되는 것입니다. 즉 셀의 부여를 막는 행위는 로그인을 막는 행위와 같은 것입니다. 

셸은 커널에서 분리된 별도의 프로그램이며 여러 종류의 셸 들이 존재합니다.

각 셸 들의 종류와 특징에 대해 알아보겠습니다.

 

1. Bourne Shell 

- AT&T사의 벨 연구소의 연구원 출신인 스티븐 본이 개발했습니다.

- 유닉스 버전 7의 기본 셸입니다.

 

2. Bash(Bourne Again Shell)

- 브라이언 폭스가 GNU 프로젝트를 위해 개발했습니다.

- Bourne Shell을 기반으로 만들어 졌습니다.

- 현재 리눅스의 기본 셸입니다.

 

3. C Shell(csh) 

- 버클리 대학의 빌 조이가 개발했습니다.

- C언어를 기반으로 만들었습니다.

- 명령행 편집 기능은 지원하지 않습니다.

 

4. tcsh

- 켄 그리어가 개발했습니다.

- C Shell을 기반으로 개발하였으며 csh의 기능을 강화시킨 셸입니다.

- 명령어 완성 기능, 명령행 편집 기능이 추가되었습니다.

 

5. Korn Shell(ksh)

ksh은 AT&T사의 벨 연구소의 연구원 출신인 데이비드 콘이 개발했습니다.

Bourne Shell을 확장하여 만들었으며 C Shell의 기능들도 많이 추가되었습니다.

 

셸들의 개발 순서는 Bourn Shell - C Shell - tcsh - Korn Shell - Bourn Again Shell 순 입니다.

 

다음은 셸을 확인 하고 변경 하는 방법에 대해 알아보겠습니다.

먼저 셸을 확인 하는 방법은 두가지 있습니다.

1. 환경 변수 확인 하기 (SHELL)

 

 

셀 변수와 환경 변수에 대한 자세한 내용은 다음 글에서 확인 해주시길 바랍니다. 리눅스의 개요 - 셸 변수 & 환경 변수 (tistory.com)

 

2. /etc/passwd 파일 확인 하기

/etc/passwd 파일에는 각 사용자에게 부여된 셸 들이 나와 있습니다. (저는 keum 사용자만 출력 했습니다.)

 

 

이제 셸을 변경 해 보겠습니다.

셸 변경때 사용하는 명령어는 chsh입니다.

변경하고자 하는 셸은 절대 경로로 입력 해주어야 합니다. /bin/bash, /bin/csh 등

chsh -l 명령어를 통해 셸 들의 절대 경로를 확인 할 수 있습니다.

 

 

변경이 정상적으로 되었는지 확인 해보겠습니다.

 

 

/etc/passwd 파일에는 정상적으로 변경이 되었지만 SHELL 환경 변수에는 적용이 안된 것을 확인 할 수 있습니다.

SHELL 환경 변수에도 적용 시키는 방법은 두가지 방법이 있습니다.

 

첫번째, 로그아웃 후 재 로그인 하기

chang 사용자의 셸을 변경 해보겠습니다.

1. 다른 사용자로 로그인 하기 (keum)

 

2. 변경 하고자 하는 사용자로 로그인 하기 (chang 현재 /bin/bash)

 

 

3. 셸 변경하기 (/bin/bash -> /bin/csh)

 

 

4. 로그아웃 후 다시 로그인 하기 (로그아웃 할 떄는 exit 명령어를 사용하면 됩니다.)

 

정상적으로 적용 된것을 확인 하실 수 있습니다.

 

두번쨰, 재부팅하기 (reboot)

재부팅하는 방법은 단순히 셸을 변경후 reboot 명령어를 해주면 됩니다.

첫번째 방법 처럼 다른 사용자(keum)로 로그인후 변경하고자 하는 사용자(chang)로 로그인 할 필요 없이 처음부터 변경하고자 하는 사용자(chang)로 로그인후 셸 변경 - 재부팅 하면 됩니다.

 

첫번 째 방법과 두번 째 방법 둘다 사용자가 로그인 하는 과정을 다시 거치는 과정입니다. 이를 해야 변경된 셀이 적용되는 이유는 앞에서 말했듯이 셸은 로그인할 때 각 사용자한테 설정된 셸이 부여되기 때문입니다. 그렇기 때문에 사용자한테 재 설정한 셸을 부여하기 위해서는 재로그인을 해야 하는 것입니다.