2017-01-18 166 views
0

我不知道是否有一個很好的方式來源另一個沒有$(basename「$ 0」)解決方案的shell腳本,因爲有時沒有設置「$ 0」。

例如,對於登錄shell,「$ 0」將是「-sh」。

關於cwd解決方案有同樣的問題。

回答

2

你可以用這句話來找出父bash腳本的目錄:

dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 

然後,你可以打電話給你的腳本是這樣的:

cd $dir; source ./other_script 

source $dir/other_script 

看到這個相關文章:Getting the source directory of a Bash script from within

+0

非bash解決方案呢?有沒有POSIX shell解決方案? –

+0

我沒有找到POSIX解決方案。如果我這樣做,我會檢查'$(dirname $ 0)'的輸出。如果它是絕對路徑,只需使用該目錄即可。如果它是相對路徑,則使用'$ PWD/$(dirname $ 0)'。否則,遍歷'$ PATH'並在每個目錄中查找'$ 0'。 – codeforester

+0

這仍然不起作用,因爲有時$ 0是-sh,這與任何路徑無關。 –

相關問題