Bash 스크립트는 .sh 또는 .bash 확장자를 사용합니까?

Bash 스크립트는 .sh 또는 .bash 확장자를 사용합니까?

(바라보다Ubuntu-OSX 호환성, 사용 편의성 및 POSIX를 위해 #!/bin/sh 또는 #!/bin/bash를 사용하세요.)

내 스크립트가 Bash 쉘을 사용하도록 하려면 .bash확장 기능을 사용하여 실제로 Bash를 호출합니까, 아니면 시스템 구성이나 첫 번째 shebang 라인에 의존합니까? 둘 다 유효하지만 서로 다른 경우 어느 것이 우선합니까?

.sh"shell script"만 표시하고 첫 번째 줄에서 Bash 셸(예: #!/usr/bin/env bash)을 선택하여 스크립트를 종료해야 하는지, 아니면 .bash첫 번째 줄의 설정과 함께 스크립트를 종료 해야 하는지 잘 모르겠습니다. ).

Bash를 호출하고 싶습니다.

답변1

.bash 확장자를 사용하는 것이 실제로 bash를 호출하는지 여부는 시스템 구성/첫 번째 shebang 라인에 따라 다릅니다.

인터프리터를 명시적으로 사용하지 않는 경우 호출되는 인터프리터는 다음과 같습니다."쉐본"스크립트에 사용됩니다( #!-line, 스크립트 파일의 첫 번째 줄이어야 함).

반면에 인터프리터를 명시적으로 사용하는 경우 인터프리터는 스크립트에 어떤 확장을 제공하는지 상관하지 않습니다. 그러나 확장 기능은 그것이 어떤 유형의 스크립트인지 다른 사람들에게 매우 명확하게 보여주기 위해 존재합니다.

[sreeraj@server ~]$ cat ./ext.py
#!/bin/bash
echo "Hi. I am a Bash script"

.pyBash 스크립트를 확장한다고 해서 Python 스크립트가 되는 것은 아닙니다.

[sreeraj@server ~]$ python ./ext.py
  File "./ext.py", line 2
    echo "Hi. I am a Bash script"
                                ^
SyntaxError: invalid syntax

항상 Bash 스크립트입니다.

[sreeraj@server ~]$ ./ext.py
Hi. I am a Bash script

답변2

스크립트 이름은 실행 방법과 관련이 없습니다.

shebang 라인은 스크립트를 실행하는 데 사용되는 인터프리터를 정의합니다.

나는 개인적으로 스크립트가 sh, bash, perl 등인지 상관하지 않으므로 스크립트의 기능에 따라 이름을 지정했습니다. 알고 싶으면 file scriptname파일이 무엇인지 알아 보겠습니다.

따라서 스크립트를 실행하려면 첫 번째 줄로 bash사용하십시오 .#!/bin/bash

관련 정보