1. [Unix/Linux] 쉘 활용 기초
ㅇ 기본 쉘 (로그인 쉘)
- 사용자 로그인시에, 자동으로 생성되는 기본 쉘을 말함
ㅇ 쉘의 기동
- 사용자가 로그인할 때, 기본 쉘이 자동 수행되고,
- 제반 사용자 환경이 설정된 초기화 파일이 실행되고,
- 이후 사용자 명령의 입력을 기다림 (프롬프트 대기)
ㅇ 쉘의 프롬프트
- 관리자 권한 : #
- 일반사용자 : $ (sh, bash 등) 또는 % (FreeBSD)
2. 쉘의 특수 문자
ㅇ *, ?, |, ;, [], ~, '', "", ``, > 등
- (물결) ~ : 현재 사용자 홈 디렉토리
. 한편, ~로그인ID 이면, 명시된 해당 사용자의 홈 디렉토리
- (대시) - : cd로 디렉토리 변경 직전의 작업 디렉토리
- (파이프) | : 왼쪽 명령 실행 결과를 오른쪽 명령의 입력으로 전달
- (리다이렉션) > : 입출력의 방향을 바꿈
- (이전 실행 명령의 리턴값) : $?
. 例) $ echo $? => 만일, 이전 실행 명령이 성공했다면, 0을 출력하며 성공을 알림
3. 서브 쉘 (자식 쉘, 하위 쉘)
ㅇ 기본 쉘의 프롬프트 상에서 다른 하위 쉘을 생성 가능
- 여러 쉘들이 마치 체인 처럼 연결 가능
- 서브 쉘의 종료는, ctrl+d,exit 등으로 가능하며, 이는 logout과 같음
4. 쉘의 확인 및 변경
ㅇ 기본 쉘의 확인
- /etc/passwd 암호 파일 내 해당 사용자 정보의 끝 항목에 기본 쉘이 기록되어 있음
. 例) grep 사용자명 /etc/passwd
- 대부분, /bin/sh에 심볼릭 링크되어 있는 것으로도 확인 가능
. 例) ls -l /bin/sh
ㅇ 기본 쉘의 변경 : chsh [옵션] [사용자명]
- 옵션
. -s : 변경코자하는 셸을 명시할 때 사용 (--shell)
. -l : 사용 가능한 셸의 목록 정보를 출력 (/etc/shells 파일 내용의 출력) (--list-shells)
. -u : chsh 사용법 출력 (--help)
. -v : 설치한 패키지의 버전 정보 출력 (--version)
- 例) chsh -s /bin/csh user1 : 사용자 user1에게 절대경로 /bin/csh를 갖는 기본 쉘로 바꿈
ㅇ 현재 사용중인 쉘 확인
- 例) echo $SHELL $BASH_VERSION ☞ 쉘 환경 변수 참조
- 例) grep 사용자명 /etc/passwd
ㅇ 현재 사용 가능한 쉘의 종류 확인
- /etc/shells 파일 내 저장되어 있음
- 例) chsh –l 명령어를 치거나, cat /etc/shells 내용 확인
5. 쉘의 신호 (특수 키) ☞ 시그널 참조
ㅇ 쉘의 종료 : Ctrl + d (^D)
- 쉘은 입력의 끝으로 보고, 쉘을 종료 (즉, exit,logout 과 같은 효과)
ㅇ 쉘의 중지 : Ctrl + c (^C)
- 현재 실행 프로세스의 강제 중지
ㅇ 쉘의 일시 중지 : Ctrl + z (^Z)
- 현재 실행 프로세스의 일시 중지
6. 쉘에서, 명령어 형식 및 유형
ㅇ 명령어 형식
- 명령어 [-옵션] 매개변수 ...
ㅇ 종류
- 단축 명령 (에일리어스)
- 쉘 예약어
- 함수
- 내부 명령어 ☞ 쉘 내부 명령어 참조
- 외부 명령어 ☞ 유닉스 명령어 참조
7. 쉘에서, 실행 파일의 실행 과정
ㅇ 부모 쉘은, 자식 프로세스를 만들고,
ㅇ 자식 프로세스가 실행 파일을 실행하는 동안, 부모 쉘은 대기하며,
ㅇ 자식 프로세스의 종료 후, 부모 셀로 복귀하며,
ㅇ 부모 쉘은, 다시 프롬프트를 내놓게 됨