
쉘의 유형 알아보기
ls -l /bin/sh
위와 같은 명령을 입력하면 기본 시스템 쉘인 /bin/sh가 소프트링크를 이용해서 bash로 지정한 것을 볼 수 있다.
dash 쉘 등 다른 쉘을 실행하고 싶다면 /bin/dash 등을 직접 입력해서 실행하고 exit을 통해 나갈 수 있다.
부모/자식 쉘 관계 이해하기
사용자가 터미널에 로그인할 때 실행되는 기본쉘은 부모쉘이다. 부모 쉘 프로세스는 CLI 프롬프트를 제공하고
명령이 입력될 때까지 기다린다.

ps -f 프로세스는 bash 프로세스의 자식 프로세스임을 알 수 있다.
서브쉘로 가지를 쳤을 때 ps --forest 명령을 입력하면 부모-자식 관계를 트리 구조로 볼 수 있다.
서브쉘을 만드는 방법은 1. 쉘 스크립트를 실행하거나 2. 프로세스 목록을 만드는 두 가지 방법이 있다.
# 프로세스 목록 만들기
(pwd; ls; cd /etc; pwd; cd; pwd; ls)
# 0
pwd; ls; cd /etc; pwd; cd; pwd; ls; echo $BASH_SUBSHELL
# 1
(pwd; ls; cd /etc; pwd; cd; pwd; ls; echo $BASH_SUBSHELL)
# 2
(pwd; ls; cd /etc; pwd; cd; pwd; ls; (echo $BASH_SUBSHELL))
위처럼 괄호를 더해서 명령 목록을 프로세스 목록으로 바꾸면 명령은 서브쉘에서 실행된다.
서브쉘은 쉘 스크립트에서 멀티 프로세싱을 위해 사용되지만 처리가 느려지고 대화형 CLI 쉘 세ㅕㅅㄴ의 경우
터미널이 서브쉘의 입출력에 발이 묶이게 된다는 부작용이 있다.
서브쉘 사용하기
- 백그라운드 모드 사용
백그라운드 모드 명령은 명령이 처리되는 동안에도 CLI를 다른 일에 쓸 수 있다.
sleep 10
sleep 10 &
# 백그라운드 프로세스 출력
jobs
프로세스 목록을 백그라운드 모드로 돌릴 수도 있다.
- 코프로세싱
코프로세싱이란 두 가지 작업을 동시에 수행하는 것으로, 백그라운드 모드에서 서브쉘을 생성하고
서브쉘에서 명령을 실행한다.
coproc sleep 10
jobs
# 명령에 이름 붙이기
coproc MyJob { sleep 10; }
# 여러 단계 서브쉘 생성
coproc ( sleep 10; sleep 5)
ps -f
내장 쉘 명령 알아보기
- 외부 명령 살펴보기
which ps
type -a ps
ls -l /bin/ps
외부 명령이 실행될 때마다 자식 프로세스가 fork 된다. 내장된 명령을 사용할 때는 fork가 필요없다.
- 내장 명령 살펴보기
type cd
type exit
type -a pwd
type -a echo
또 다른 쉘 내장 명령으로 alias가 있다. 현재 사용가능한 alias들을 보기 위해선 alias -p를 입력한다.
주의해야할 점으로는 alias는 내장 명령이므로 해당 명령이 정의되어 있는 쉘 프로세스에서만 사용가능하다는 것이다.
이를 해결하기 위해서는 환경 변수를 사용한다.
'LINUX > 리눅스 쉘 스크립트 바이블 정리' 카테고리의 다른 글
| [리눅스 바이블] 7. 리눅스 파일 사용 권한 이해하기 (0) | 2022.02.09 |
|---|---|
| [리눅스 바이블] 6. 리눅스 환경 변수 사용하기 (0) | 2022.02.06 |
| [리눅스 바이블] 4. 더 많은 bash 쉘 명령 (0) | 2022.02.03 |
| [리눅스 바이블] 3. 기본 bash 쉘 명령 (0) | 2022.02.03 |
| [리눅스 바이블] 1. 리눅스 쉘 시작하기 (0) | 2022.02.03 |