수색…


통사론

  • bash 인터프리터로 /bin/bash 를 사용하십시오 :

    #! / bin / bash

  • env 실행 파일로 PATH 환경 변수에서 bash 인터프리터를 검색하십시오.

    #! / usr / bin / env bash

비고

일반적인 실수는 윈도우 엔드 라인 형식의 실행하려고하는 것입니다 \r\n 오두막에서 사용되는 스크립트 인터프리터가이 경우, UNIX / Linux 시스템에서 스크립트 파일을 :

/bin/bash\r

그리고 뻔뻔스럽게 발견되지 않지만 알아 내기가 어려울 수 있습니다.

직접적인 속임수

bash 인터프리터로 스크립트 파일을 실행하려면, 스크립트 파일의 첫 x 째 행bash 실행 파일의 절대 경로를 표시해야합니다.

#!/bin/bash

shebang의 bash 경로는 다음과 같이 스크립트가 직접 실행될 경우에만 해결되고 사용됩니다.

./script.sh

스크립트에는 실행 권한이 있어야합니다.

bash 인터프리터가 명시 적으로 스크립트를 실행하도록 지시되면 shebang은 무시됩니다.

bash script.sh

Env Shebang

실행 파일 env 를 사용하여 PATH 환경 변수에있는 bash 실행 파일을 사용하여 스크립트 파일을 실행하려면 스크립트 파일의 첫 번째 줄bash 인수와 함께 env 실행 파일의 절대 경로를 표시해야합니다.

#!/usr/bin/env bash

shebang의 env 경로는 다음과 같이 스크립트가 직접 실행될 경우에만 해결되고 사용됩니다.

script.sh

스크립트에는 실행 권한이 있어야합니다.

bash 인터프리터가 명시 적으로 스크립트를 실행하도록 지시되면 shebang은 무시됩니다.

bash script.sh

기타 속옷

커널이 알고있는 두 종류의 프로그램이 있습니다. 그것에 의해 식별되는 바이너리 프로그램은 일반적 컴파일러에 의해 생성되는 ELF (E xtenable L의 oadable F의 ORMAT) 헤더이다. 두 번째 스크립트는 모든 종류의 스크립트입니다.

시퀀스 #! 와 함께 맨 처음 줄에서 파일이 시작되면 . 다음 문자열은 해석기의 경로 이름이어야합니다. 커널이이 행을 읽으면,이 경로명에 의해 명명 된 인터프리터를 호출하고이 줄에있는 다음의 모든 단어를 인터프리터에 대한 인수로 준다. "something"또는 "wrong"라는 파일이 없다면 :

#!/bin/bash something wrong
echo "This line never gets printed"

bash는 존재하지 않는 "무언가 잘못"이라는 인수를 실행하려고 시도합니다. 스크립트 파일의 이름도 추가됩니다. 이것을보기 위해서는 echo shebang을 사용하십시오 :

#"/bin/echo something wrong 
# and now call this script named "thisscript" like so:
# thisscript one two
# the output will be:
something wrong ./thisscript one two

awk 와 같은 일부 프로그램은이 기술을 사용하여 디스크 파일에있는 더 긴 스크립트를 실행합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow