Linux가 텍스트 스크립트를 실행할 때 호출할 인터프리터를 어떻게 결정하는지 아는 사람이 있습니까? "shebang"에 대한 세부 정보, 목적 및 수행 방법이 필요합니다.
답변1
스크립트를 실행하는 두 가지 주요 방법이 있습니다.
스크립트를 로드할 실행 파일의 이름을 사용하십시오.
perl script.pl python script.py
이 경우 쉘은 실행파일을 로드하여 perl
인자 python
를 제공하는데, 실행파일은 주어진 인자가 스크립트임을 알고 로드하여 실행할 수 있어야 한다.
여기에는 특별한 마법이 없습니다. 쉘은 매개변수를 사용하여 실행 파일을 시작합니다.
스크립트는 실행 가능하며 자체적으로 시작됩니다.
$ script.sh $ ./script.pl $ /some/path/script.py
제어는 호출을 통해 커널에 제공됩니다 execve
. 스크립트가 유효한 she-bang(또는 ELF와 같은 실행 파일)이 있는 텍스트 파일인 경우 커널은 파일 시작 부분의 매직 값을 이해하고 지정된 인터프리터를 로드합니다. 그러면 인터프리터는 텍스트 파일을 스크립트로 로드하고 실행합니다.
쉘 호출이 execve
실패하는 경우(예: 스크립트에 유효한 she-bang이 없음) 쉘은가능한스크립트를 직접 로드하고 실행합니다. 이것은 bash에 의해 수행됩니다.
그리고 어떤 경우에는 다음으로부터 man bash
:
프로그램이 #!으로 시작하는 파일인 경우 첫 번째 줄의 나머지 부분은 프로그램의 인터프리터를 지정합니다. 쉘은 이 실행 가능 형식을 기본적으로 처리하지 않는 운영 체제에서 지정된 인터프리터를 실행합니다.
더 자세한 내용을 알고 싶으시면 다음 사이트를 방문해 주세요.