Shell에서의 Exit Status에 관하여
Exit Status에 대하여 알아보자.
개요
지금은 소프트웨어나 프로그램이라고 하면 사람들은 거의 그래픽 UI를 가지는 프로그램을 생각 할 것이다. 하지만 Linux와 같은 UNIX계열의 운영체제에서는 쉘(SHELL)에서 많은 일을 수행한다
리눅스에서 어떤 프로그램을 설치 하기위해 구글링 하면 거의 대부분은 쉘에서 패키기 관리자(
apt
,dnf
,pacman
등)를 실행하여 프로그램을 설치 할 것이다.
복잡한 여러 명령을 반복적으로 수행해야 할때 쉘 스크립트를 작성하면 이러한 반복적인 작업을 매우 쉽고 빠르게 할 수 있다.
우리는 쉘에서 명령어를 실행 할때 해당 명령의 출력을 통해 프로그램이 정상적으로 실행되었는지를 판단 할 수 있다. 실행 도중 에러가 발생 하였다면 화면에 에러가 출력 될것이다.
전통적으로 UNIX 계열 프로그램은
ls
와 같이 명시적으로 정보를 출력을 요구 하는 명령이 아닌 경우 정상적으로 동작 하였을 경우 아무런 출력이 없는 경우가 많다. 이는 침묵은 금이라는 유닉스의 설계 철학에 따르는 것이다.
Speech is silver, but silence is gold.
그렇다면 쉘에서 실행한 명령이 정상적으로 수행되었는지 어떻게 판단 할까?
우리가 일반적으로 사용하는 방법은 명령이 실행되면서 출력되는 출력 값을 경험적으로 알고 있기 때문에 이 출력값을 기반으로 명령이 성공적으로 수행되었는지 확인한다. 하지만 이 방법은 사람에게는 매우 효율적인 방법이지만 쉘스크립트를 짜는 프로그래머 입장에서는 매우 번거로운 방법이다.
더 일반적으로 사용할 수 있는 방법을 찾아 보자.
모든 명령은 종료될 때 waitpid
시스템 콜(이나 이와 동등항 함수)에서 Exit Status를 반환하는데 (명시적으로 지정하지 않을 경우 기본값(0
)을 반환한다.) 프로그래머는 이 Exit Status를 가지고 자신의 실행한 명령이 정상적으로 실행 되었는지 판단 할 수 있다.
Exit Status
Exit Status는 O 에서 255 사이의 값을 가지고 쉘의 경우 125 이상의 값을 사용한다.