Bourne 쉘 명령

Bourne 쉘에서 명령을 실행할 수 있습니다.

Bourne 쉘에서 명령을 발행하면, 먼저 그 명령을 평가하고 모두 표시된 대체를 수행합니다. 그런 다음, 다음의 경우에 명령을 실행합니다.
  • 명령 이름이 Bourne 쉘의 특수 내장 명령입니다.

    또는

  • 명령 이름이 정의된 함수의 이름과 일치합니다. 이 경우에는 쉘은 위치 매개변수를 함수의 매개변수로 설정합니다.
명령이 내장 명령 또는 정의된 함수 이름과 일치하지 않고 명령이 컴파일된(2진) 프로그램인 실행 파일의 이름을 지정하는 경우, 쉘(parent처럼)은 프로그램을 즉시 실행하는 새(child) 프로세스를 작성합니다. 파일이 실행 가능으로 표시되지만 컴파일된 프로그램이 아닌 경우에는 쉘은 쉘 프로시저로 가정합니다. 이 경우, 쉘은 자신의 또 다른 인스턴스(subshell)를 작성하여 파일을 읽고 여기에 포함된 명령을 실행합니다. 쉘은 또한 서브쉘에서 괄호 안에 있는 명령을 실행합니다. 사용자에게는 컴파일된 프로그램은 쉘 프로시저와 똑같은 방법으로 실행됩니다. 쉘은 일반적으로 파일 시스템 디렉토리에서 다음 순서로 명령을 검색합니다.
  1. /usr/bin
  2. /etc
  3. /usr/sbin
  4. /usr/ucb
  5. $HOME/bin
  6. /usr/bin/X11
  7. /sbin
  8. 현재 디렉토리
쉘은 명령을 찾을 수 없는 경우, 다음 디렉토리를 차례로 계속해서 검색합니다.
주: PATH 변수는 쉘이 검색하는 디렉토리의 순서를 결정합니다. PATH 변수를 재설정하여 검색된 디렉토리의 특정 순서를 변경할 수 있습니다.

명령을 실행할 때 특정 경로 이름을 제공하는 경우(예: /usr/bin/sort), 쉘은 사용자가 지정한 디렉토리 이외는 검색하지 않습니다. 명령 이름에 슬래시(/)가 있으면, 쉘은 검색 경로를 사용하지 않습니다.

루트 디렉토리로 시작하는 전체 경로 이름(예: /usr/bin/sort)을 제공할 수 있습니다. 현재 디렉토리와 관련된 경로 이름을 지정할 수도 있습니다. 다음과 같이 지정할 경우,
bin/myfile
셸은 현재 디렉터리에서 ' bin '이라는 디렉터리를 찾고 해당 디렉터리에서 ' myfile'라는 파일을 찾습니다.
주: 제한된 쉘은 슬래시(/)가 있는 명령을 실행하지 못합니다.

나중에 불필요한 exec 명령을 피하기 위해 쉘은 각 실행된 명령의 검색 경로 위치를 기억합니다. 상대적 디렉토리(이름이 /로 시작하지 않는 디렉토리)에서 명령을 발견하면, 현재 디렉토리가 변경될 때마다 쉘은 명령의 위치를 재결정해야 합니다. 사용자가 PATH 변수를 변경하거나 hash -r 명령을 실행할 때마다 쉘은 기억된 모든 위치를 잊어버립니다.