it-gundan.com

bash 스크립트에 .sh 또는 .bash 확장명을 사용 하시겠습니까?

( buntu-OSX 호환성 및 사용 편의성 및 POSIX에는 #!/bin/sh 또는 #!/bin/bash 사용 참조)

스크립트에서 bash 셸을 사용하려면 .bash 확장명을 사용하여 실제로 bash를 호출하거나 system config/1st Shebang 줄에 의존합니까? 둘 다 유효하지만 다른 경우, 어느 것이 우선합니까?

"Shell script"를 표시하기 위해 .sh로 스크립트를 종료 할 것인지 확실하지 않은 경우 첫 줄에서 bash Shell (예 : #!/usr/bin/env bash) 또는 .bash (1 행 설정)로 끝낼 지 여부입니다. bash를 호출하고 싶습니다.

38
Michael Durrant

.bash 확장명을 사용하여 실제로 bash를 호출하거나 시스템 구성/1st Shebang 라인에 의존합니다.

인터프리터를 명시 적으로 사용하지 않으면 호출되는 인터프리터는 스크립트에서 사용 된 Shebang에 의해 결정됩니다. 인터프리터를 구체적으로 사용하는 경우 인터프리터는 스크립트에 어떤 확장자를 제공하든 상관하지 않습니다. 그러나 확장 기능은 다른 스크립트가 어떤 종류의 스크립트인지를 명확히하기 위해 존재합니다.

[[email protected] ~]$ cat ./ext.py
#!/bin/bash
echo "Hi. I am a bash script"

보다, .py bash 스크립트의 확장은 그것을 python 스크립트로 만들지 않습니다.

[[email protected] ~]$ python ./ext.py
  File "./ext.py", line 2
    echo "Hi. I am a bash script"
                                ^
SyntaxError: invalid syntax

항상 bash 스크립트입니다.

[[email protected] ~]$ ./ext.py
Hi. I am a bash script
21
Sree

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

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

나는 개인적으로 스크립트가 sh, bash, Perl 등 어떤 것이 든 상관하지 않습니다. 확장 기능을 추가하는 것을 발견했습니다. 내가 할거야 file scriptname 알고 싶습니다. 파일이 무엇인지 알고 싶습니다.

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

24
wurtel