我發現不同的解決方案來獲得sh腳本自己的路徑,但它們都不能在純POSIX sh中通過.
工作。 的解決方案,我到現在爲止:在SH如何獲得sh腳本自己的路徑,即使通過`.`
dirname $(readlink -f $0)
作品,但給人的$0
父腳本的路徑是流程相關的(見上文)
${BASH_SOURCE[0]}
這顯然是一種只bash的解決方案。
證明此解決方案不起作用:
$ tree --noreport
.
├── script1.sh
└── src
└── script2.sh
$ cat script1.sh
#!/bin/sh
. src/script2.sh
$ cat src/script2.sh
#!/bin/sh
echo '$0 :' $(dirname $(readlink -f $0))
echo '$BASH_SOURCE :' $BASH_SOURCE
$ sh script1.sh
$0 : /tmp/sof
$BASH_SOURCE :
我可以在script2.sh寫什麼,以獲得正確的/ tmp/SOF/src目錄?
無論如何不確定它是否能夠正常工作,在執行過程中或多或少的執行過程中,Script2.sh都是源代碼,沒有執行並且在** script1.sh中像**一樣使用。它瘋了,bash有辦法* *周圍工作*這個... – Olli
可能重複或遷移的理由:http://unix.stackexchange.com/q/4650 – Harald
@Harald此答案給出了此操作不起作用案件。爲tcsh提供的解決方案檢測腳本是否來源,但沒有給出路徑。 – Dunatotatos