* 쉘의 정의

쉘(Shell)은 운영체제에서 사용자가 입력하는 명령을 읽고 해석하여 대신 실행해주는 프로그램이다.
쉘은 Unix 나 리눅스에만 있는것은 아니며, Windows 운영체제나 다른 운영체제에도 Shell 은 필수 요소.

운영체제는 로그인한 사용자가 없다면 하나의 쉘도 실행되지 않은 상태이다.
사용자가 로그인을 시도하면 운영체제는 ID와 패스워드를 받아들이는 로그인 프로그램을 실행하게 되고, 사용자가
입력한 ID와 패스워드를 검증한 뒤 정상적인 사용자라면 쉘을 실행하여 사용자 세션을 쉘에게 넘겨준다.


    * 역활

-. 사용자가 입력한 명령을 해석하여 대신 실행해주는 것.
    쉘 내부 명령어 : 스스로 실행하고 결과를 화면에 표시.
    쉘 외부 명령어 : PATH 환경변수에 지정된 경로에서 입력 받은 명령과 같은 파일을 찾아 exec() 시스템콜을 호출하여
                     실행한 뒤 키보드와 마우스 등의 입력장치와 모니터에 해당하는 표준 출력장치의 제어권을 해당 프로그램에게 넘겨준 뒤
                     프로그램이 끝날 때 까지 대기.


    * 쉘의 종류

-. Unix/Linux : ps 명령을 실행하면 보이는 프로세스 중에서 bash, sh, ksh, csh 등
-. Windows : 작업관리자에서 볼수 있는 explorer.exe, cmd.exe 등


    * 쉘의 환경변수

쉘은 사용자가 임의로 변경이 가능한 여러가지 환경변수를 사용한다. 하지만, 미리정의된 환경변수의 이름을 변경하면 안된다.(할수도 없다)
환경변수는 쉘의 종류에 따라 설정/확인하는 방법이 다르다. (bash-env, csh-set)

사용자와 운영체제 사이에서 사용자가 입력한 명령어를 신속하게 찾고 운영체제와 사용자 그리고 사용자가 실행한 다른 프로그램과의 소통을 위해 사용하는 것이 환경변수이다.
환경변수들은 사용자가 읽을 수만 있는 것과 변경이 가능한 것이 있는데, 대표적인 환경변수는 PATH 가 있다.
환경변수 PATH는 사용자가 입력한 명령이 내부 명령어인지 확인하고 아닐 경우 해당 명령은 외부명령어(실행파일)인 것으로 간주.


    * 쉘 환경변수의 설정

쉘 환경변수는 로그인 할 때 설정된다. 사용자 환경은 프로파일에서 설정되는데 프로파일은 글로벌 프로파일과 계정 프로파일 두가지가 있으며,
이 프로파일의 파일 위치와 이름은 운영체제와 쉘의 종류에 따라 조금씩 다르다.

sh, ksh : /etc/profile , 사용자 홈디렉토리의 .profile
bash : /etc/profile , /etc/bashrc 두 개의 파일과 사용자 홈디렉토리의 .bashrc가 환경 변수가 설정될 수 있는 파일.
csh 은 /etc/csh.login ( Unix 종류와 버전에 따라 다르나 일반적으로 login 이라고 붙음 )과 사용자 홈디렉토리의 .cshrc

 

+ Recent posts