스크립트의 첫 번째 줄

스크립트의 첫 번째 줄

첫 번째 줄의 #!/bin/bash는 무엇을 의미합니까? 그것은 단지 주석일 뿐이고 프로그램의 다른 모든 주석과 마찬가지로 셸에서 무시됩니까?

또는

인터프리터는 이 줄만 해석하고 #으로 시작하는 다른 모든 줄은 무시합니다(#!/bin/bash 제외).

답변1

첫 번째 줄은 파일을 실행할 때 사용할 인터프리터를 컴퓨터에 알려줍니다.

Python으로 스크립트를 작성한다고 가정합니다. 이 스크립트를 실행하는 동안 Python 인터프리터를 사용하게 됩니다. 컴퓨터는 사용할 인터프리터를 어떻게 알 수 있으며, 다음 줄로도 알 수 있습니다.셰르본, 파이썬의 경우

#!/usr/bin/env python
print "Hello world"

bash에서 스크립트를 작성하고 bash 스크립트의 shebang을 사용하여 이 코드를 실행할 때 bash 인터프리터를 사용하도록 컴퓨터에 지시한다고 다시 가정해 보겠습니다.

 #!/usr/bin/bash 
  echo "Hello world" 

답변2

(Linux에서) 로 시작하는 첫 번째 줄은 #!다음과 같이 표시됩니다.리눅스 커널내부 구현실행(2)시스템 호출(대부분의 명령에 대해 쉘은 이후에 이를 호출합니다 fork. 이 명령은 함수도 아니고 쉘 내장도 아닙니다).

다른 실행 파일의 절대 경로를 언급할 수 있습니다( 예를 /usr/bin/env참조하세요 ).환경(1)). 어리석은 예로, 고유한 줄이 포함된 스크립트를 만든 #!/bin/cat /proc/self/maps다음 스크립트를 읽고 실행할 수 있도록 만든 chmod a+rx다음(를 사용하여) 실행해 보십시오.

POSIXexecve사양하나도 언급하지 않았다셰르본특정 처리를 수행하지만 제가 작업한 모든 Unix 계열 시스템(Linux, SunOS, HPUX, AIX...)에서는execve

통역사 는 bash로 시작하는 다른 줄과 마찬가지로 이 줄을 #주석으로 건너뜁니다.

또한보십시오binfmt_misc(리눅스에만 해당).

답변3

현재 사용되는 쉘 대신 bash 쉘을 사용하여 스크립트를 강제로 실행합니다.

관련 정보