bash에서 실행중인 스크립트의 경로를 얻는 것은 $0
변수를 통해 간단합니다. 그러나 다른 스크립트를 통해 점으로 찍히는 경우에는 작동하지 않고 대신 호출하는 스크립트의 경로가 표시됩니다.점으로 찍힌 스크립트의 경로 검색
/tmp/script2.sh
/tmp/script2.sh
그러나, 점선 인 스크립트 $0
경로로 방출하는 경우 : 상기 스크립트로부터 출력되는
#!/bin/bash
# script2.sh
. /tmp/script1.sh
echo $(readlink -f $0)
#!/bin/bash
# script1.sh
echo $(readlink -f $0)
... 다음 예를 고려 이 스크립트 대신 출력은 다음과 같습니다.
/tmp/script1.sh
/tmp/script2.sh
올바른 값을 얻으려면 어떻게해야합니까?
FYI -'echo "$ (readlink -f"$ 0 ")"는 더 정확한 공식 일 것입니다. 그리고'$ 0'은 * always * suspect입니다. 끝에있는 섹션을 포함하여 [BashFAQ # 28] (http://mywiki.wooledge.org/BashFAQ/028)을 참조하십시오 ("왜 $ 0은 옵션이 아닌가"). –