■ 쉘은 커널과 사용자가 서로 의사소통을 할 수 있도록 도와주는 인터페이스이다. 특히 로그인 쉘의 용도로 사용되는 쉘은 사용자의 환경 정보가 저장된 파일을 실행하여, 사용자의 로그인 환경에 영향을 미친다.


(1) 로그인 과정

1. 사용자가 로그인을 시도하면,  로그인 프로그램은 /etc/passwd 파일의 첫 번째 필드와 /etc/shadow 파일을 통해 유효성을 검사한다.
2. 사용자가 확인되면 로그인 프로그램은 작업 환경을 정의한 파일을 근거로 초기 로그인 환경을 설정한다.

3. 로그인 과정이 완료되면 passwd 파일의 마지막 필드에 기술된 로그인 쉘 프로그램이 실행된다.
4. 로그인쉘은 시스템 설정 파일인 /etc/profile 파일을 실행하여 환경변수 및 모든 사용자에게 적용되는 시스템 환경을 설정한다.
5. 각 사용자별 설정 파일인 홈 디렉토리에 있는 .bashrc 파일을 실행하여 각 사용자가 정의한 환경변수 및 사용자 환경을 재설정한다.


(2) 쉘(SHELL)
: 사용자는 커널에 직접 명령을 내리기 어렵기 때문에 운영체제의 일부인 쉘이 사용자로부터 명령을 입력받아 그것을 해석하고 실행하며, 결과적으로 사용자가 운영체제를 사용할 수 있도록 사용자 환경을 만들어 준다.

○ 쉘의 기능
- 내부 명령어와 외부 명령어 실행
- 멀티 프로세스 관리
- 여러 명령을 연결하는 파이프 기능
- 입출력 재지정
- 특수 문자 의미 해석
- 환경 변수 관리
- 스크립트 프로그래밍 언어

○ 입출력 재지정
- 입출력 재지정이란, 입출력 대상으로 표준 입력과 표준 출력, 표준 에러를 사용하지 않고 다른 경로인 파일로 재지정하는 것.
- 입력 재지정 : '<' 기호 
- 출력 재지정 : '>' 기호
(ex) ls -l > ls.txt  : ls -l 명령의 결과를 ls.txt 파일로 출력하여 저장한다.

○ 파이프
: 둘 이상의 결과를 함께 묶어 출력의 결과를 다른 프로그램의 입력으로 전환하는 기능
- '|' 기호를 사용하여 기호 앞의 명령 결과가 기호 뒤의 명령에 입력 데이터로 받아들여진다. 사용자는 마지막 명령의 출력 결과만 확인.
(ex) ps -ef | grep telnet : ps -ef 명령어의 결과를 grep 명령의 입력으로 전달하여 telnet 문구를 포함한 라인만 출력한다.

○ 특수문자
: 쉘에서 사전에 정의한 특별한 의미로 사용되는 문자.
- ~(홈디렉토리), #(주석), $(쉘변수), &(백그라운드작업), *(문자열와일드카드), ;(쉘명령구분자), |(파이프), <>(입출력재지정) 등
- 작은따옴표(' ') : 특수 문자로서의 사전 정의를 제거하여 단순 문자로 취급한다. (ex) echo '$PATH' : 문자 $PATH 출력
- 백슬러시(\) : 바로 다음에 나오는 문자의 사전적 정의를 제거해준다. (ex) echo \$PATH : 문자 $PATH 출력
- 역인용부호(` `) : 문자열을 명령어로 인식하게 해준다. (ex) echo 'date' : 문자 date가 아닌 날짜 출력


(3) 환경 변수
: 쉘에서 정의하여 사용하는 변수는 환경 변수와 로컬 변수로 구분된다.

○ 환경 변수
: 환경 변수는 여러 프로세스들에 상속된다. 즉, UNIX 시스템의 모든 프로세스들은 자신의 환경 변수를 자식 프로세스에게 상속한다.

- 환경변수 출력 : $ printenv
- 환경변수 설정 : $ setenv NAME value
- 환경변수 삭제 : $ unsetenv NAME

○ 로컬 변수
: 변수가 생성된 쉘에서만 적용이 되고 쉘로부터 파생된 다른 프로세스들에서는 적용되지 않는다. 


- 로컬변수 출력 : $ set (환경변수 함께 출력)
- 로컬변수 설정 : $ name=value
- 로컬변수 삭제 : $ unset name

○  사전에 정의된 환경 변수
: 'printenv ' 명령을 통해 현재 설정된 환경 변수들을 모두 확인할 수 있다.

- TERM : 터미널의 종류
- HOME : 홈디렉토리 지정
- SHELL : 쉘의 종류
- PATH : 파일 검색 경로 설정
- USER/LOGNAME : 사용자 계정
- MAIL : 메일확인
- MANPATH : 온라인 메뉴얼 경로
- TZ : 타임 존 설정
- LD_LIBRARY_PATH : 라이브러리 경로
- LANG : 언어 지정

※ 시스템 관리자는 전체 사용자를 대상으로 /etc/profile 파일에 환경 변수를 설정할 수 있다.



by 민트앤라떼 2013. 1. 22. 23:08