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)로 로그인후 셸 변경 - 재부팅 하면 됩니다.
첫번 째 방법과 두번 째 방법 둘다 사용자가 로그인 하는 과정을 다시 거치는 과정입니다. 이를 해야 변경된 셀이 적용되는 이유는 앞에서 말했듯이 셸은 로그인할 때 각 사용자한테 설정된 셸이 부여되기 때문입니다. 그렇기 때문에 사용자한테 재 설정한 셸을 부여하기 위해서는 재로그인을 해야 하는 것입니다.
'리눅스마스터 1급 - 필기 > 리눅스 실무의 이해' 카테고리의 다른 글
리눅스 시스템의 이해 - RAID란? (0) | 2022.01.26 |
---|---|
리눅스 시스템의 이해 - 셸 변수 & 환경 변수 (0) | 2022.01.24 |
리눅스의 개요 - 다중 명령어 & mv (0) | 2022.01.23 |
리눅스의 개요 - 개발자 (0) | 2022.01.22 |
리눅스의 개요 - 클러스터링 (0) | 2022.01.22 |