파일에 함수만 포함하는 쉘을 정의해야 합니까?

파일에 함수만 포함하는 쉘을 정의해야 합니까?

쉘 헤더를 추가해야 하는지 궁금합니다.

#!/bin/bash

스크립트에서는 second.sh단지 함수를 정의하고 다른 스크립트에서 호출합니다 script.sh.

예를 들어 다음 script.sh을 포함합니다 .

#!/bin/bash

source second.sh

func1 "make amerika great again "

echo $I_AM_SAY

그리고 second.sh첫 번째 스크립트에서 호출된 함수만 포함합니다.

X=soon

function func1 {
   fun=$1
I_AM_SAY=$fun$X
}

second.sh이를 다음과 같이 정의해야 합니까 ?

#!/bin/bash
X=soon

function func1 {
   fun=$1
I_AM_SAY=$fun$X
}

또는 다음과 같이:

#!/usr/bin/env bash

X=soon

function func1 {
   fun=$1
I_AM_SAY=$fun$X
}

답변1

아니요, shebang 라인이 필요하지 않습니다. 실행 중인 쉘은 스크립트를 직접 가져오고 새 쉘을 시작하지 않으므로(스크립트를 얻는 전체 요점) 쉘이나 커널 모두 어떤 쉘을 알 필요가 없습니다. 실행하는 데 사용되었습니다.

second.sh스크립트가 호출되는 것을 완전히 방지하려면 다음을 추가할 수 있습니다.

#!/usr/bin/false

셰르본 라인.

답변2

다른 스크립트의 파일을 사용하는 경우 source해시뱅은 해석되지 않습니다(그냥 주석일 뿐입니다). 그러나 이는 독자에게 스크립트가 특정 셸에 특정한 기능을 사용한다는 점을 상기시켜 주는 참고 사항 역할을 합니다. 물론 파일 상단 근처의 주석에 스크립트를 설명하기 때문에 주석에 일반 텍스트로 이를 언급해야 합니다. 그렇죠?

관련 정보