Bash는 실행 파일 실행을 허용하는 유일한 쉘 스크립팅 언어입니다.
실행 파일은
#!/bin/bash
최소한의 플래그로 시작해야 합니다.set
스크립트를 호출해도bash script_name
기능이 중단되지 않도록 셸 옵션을 설정하는 데 사용됩니다 .
set
특히 기능 손상을 방지하기 위해 사용하는 부분입니다. 이렇게 특정한 방식으로 부르는 것이 그것과 무슨 관련이 있습니까?
답변1
"최소 플래그 수"는 hashbang 라인에 설정된 플래그를 나타냅니다. 스크립트가 시작될 때 읽혀 ./somescript
지고 커널은 hashbang 줄을 읽고 거기에 있는 경로와 옵션에서 새 인수 목록을 만듭니다. 하지만 그렇습니다아니요bash somescript
스크립트 자체가 아닌 커널을 실행해야 하기 때문에 스크립트가 실행되는 경우 bash
이런 일이 발생할 수 있습니다 . 쉘 자체는 이 행을 결국 스크립트를 읽을 때 무시되는 주석으로 처리합니다.
예를 들어 다음 스크립트( ./hello
)를 시도해 보십시오.
#!/bin/bash -x
echo hello
두 가지 방법으로 실행하십시오.
$ ./hello
+ echo hello
hello
$ bash hello
hello
-x
추가 추적 출력은 첫 번째 경우에만 표시되며 두 번째 호출에서는 플래그가 무시됩니다.
명령을 사용하여 set
플래그를 명시적으로 활성화하면 다음과 같은 방식으로 작동하게 됩니다.
#!/bin/bash
set -x
echo hello
(그러나 사용하려고 하면 주의하세요 perl
.하다또한 hashbang 라인 자체에 대해서도 설명합니다. )