![파일에 함수만 포함하는 쉘을 정의해야 합니까?](https://linux55.com/image/144505/%ED%8C%8C%EC%9D%BC%EC%97%90%20%ED%95%A8%EC%88%98%EB%A7%8C%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20%EC%89%98%EC%9D%84%20%EC%A0%95%EC%9D%98%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
쉘 헤더를 추가해야 하는지 궁금합니다.
#!/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
해시뱅은 해석되지 않습니다(그냥 주석일 뿐입니다). 그러나 이는 독자에게 스크립트가 특정 셸에 특정한 기능을 사용한다는 점을 상기시켜 주는 참고 사항 역할을 합니다. 물론 파일 상단 근처의 주석에 스크립트를 설명하기 때문에 주석에 일반 텍스트로 이를 언급해야 합니다. 그렇죠?