본문 바로가기

Linux-Unix

[Linux] Shell - 리눅스 - 쉘


 쉘의 개념과 종류 

프로그램이란 명령어의 집합체이다.
프로그램이 실행되기 위해서는 Kernel에 적절하게 전달되고 그에 따른 부가적인 작업들을 조정해 줄 수 있는 능동적인 매개체가 필요하다.
이 역할을 수행하는 프로그램을 쉘(Shell)이라고 한다.



bsh, sh (Bourne Shell)
: 최초의 쉘로서 강력한 쉘이었지만 많은 유용한 기능들이 결여되어 있어, 많이 사용되지 않았다. sh로 사용된다.

bash (Bourne-Again Shell)
: 리눅스에서 가장 많이 사용되는 쉘이다. 보통 기본적으로 주어지는 쉘이 bash 이다. 
: POSIX와 호환되며, GNU 프로젝트에 의해 만들어지고, 배포되고 있다.
: 명령행 편집기능을 제공한다.

csh (C Shell)
: C언어와 유사하다는 이유로 많이 쓰인다.
: 본쉘과 호환되지만, 전혀 다른 프로그래밍 인터페이스를 가졌다.
: 명령행 편집기능을 제공하지 않는다.

ksh
: csh의 혈통을 잇는다.
: 명령행 편집기능을 제공한다.
: tcsh도 확장 C쉘로 명령행 편집기능을 제공한다.


위의 쉘 들을 포함하여 리눅스에서는
ash, bash, bsh, csh, ksh, zsh 등 여러가지 쉘을 사용할 수 있다.



 키와 키의 설정
 
ssty [function] [key]
: 위의 명령어를 사용하면 키를 확인하고 설정할 수 있다.
: Ctrl키는 키 앞에 ^를 넣어서 표시한다.
: 사용예는 아래와 같다.
stty erase ^H (Ctrl + H)
stty kill ^U (Ctrl + U)
stty intr ^C (Ctrl + C)

ssty -a
: stty -a 를 사용하면 현재 터미널 설정 내용을 모두 볼 수 있다.





 쉘의 동작 매커니즘

세부적으로 쉘을 사용자의 지시를 수신, 실행하는 프로그램이다.
쉘(Shell)이 사용자 명령을 보기 전에 사용자가 입력한 모든것이 디바이스 드라이버라고 부르는 프로그램을 통과해야한다.
디바이스 드라이버는 터미널을 제어하며 사용자가 입력하는 문자를 수신하고 해석을 우해,
쉘에 전달하기 전에 해당 문자가 수행할 수 있는 것을 판별한다.


이러한 디바이스는 크게 두 가지 동작모드로 나눈다.

cooked mode : 모든 키가 디바이스 드라이버에 의해 해석되기로 동작시키는 방법이다.
                        일반적으로 우리가 사용하는 모드이다.
                        이 방식을 통해 shift + k 등의 두가지 키를 동시에 입력하는 등의 작업을 할 수 있다.

row mode : 사용자가 입력하는 모든 문자가 쉘(shell)이나 쉘(shell)에 의해 실행되는 프로그램에 전달되는 형태이다.
                   특히, VT(Virtual Terminal) 애플리케이션 등의 통신 프로그램 작성시 매우 효율적으로 사용되고 있다.