#!/bin/bash를 스크립트에 넣었지만 ksh를 스크립트로 사용하면 어떻게 되나요? [복사]

#!/bin/bash를 스크립트에 넣었지만 ksh를 스크립트로 사용하면 어떻게 되나요? [복사]

shebang 연산자는 스크립트를 실행하는 데 어떤 쉘이 사용될지 알려줍니다. 다음과 같은 경우에는 어떻게 되나요?

#!/bin/bash

"ksh script_name"을 입력하면 어떻게 되나요?

답변1

입력하시면 해당 파라메타로 실행 ksh script_name됩니다 . 이는 ksh에 의해 실행된다는 의미입니다. shebang은 스크립트를 명시적으로 실행할 때만 중요합니다(예 : ).kshscript_name./script_name

답변2

짧은 답변: ksh는 스크립트를 실행하고 이를 #!/bin/bash주석으로 처리합니다.

설명하다: bash 또는 모든 쉘은 실행을 위해 실행 파일이 호출될 때마다 exec()시스템 호출을 호출합니다.

exec()파일을 로드하고 파일의 처음 16비트를 확인하여 실행 가능한 형식을 확인합니다. #!이 발견되면 파일의 첫 번째 줄의 나머지 부분을 사용하여 시작해야 하는 프로그램을 찾고 시작하려는 파일(스크립트)의 이름을 인터프리터의 마지막 인수로 제공합니다.

Shebang에 지정된 인터프리터가 스크립트를 실행하는 방법입니다.

그러나 ksh를 지정하고 인수를 제공하면 exec는 shebang을 검색하지 않지만 쉘은 $PATH변수에서 바이너리 파일을 찾아 바이너리 파일을 로드하고 파일 이름을 바이너리 파일에 인수로 제공합니다.

관련 정보