通過$0
變量獲取在bash中運行腳本的路徑是微不足道的。但是,如果您通過另一個腳本進行點擊,則不起作用,您將獲得調用腳本的路徑。考慮例如:檢索到虛線腳本的路徑
#!/bin/bash
# script1.sh
echo $(readlink -f $0)
...
#!/bin/bash
# script2.sh
. /tmp/script1.sh
echo $(readlink -f $0)
從上述腳本的輸出是:
/tmp/script2.sh
/tmp/script2.sh
然而,如果在$0
虛線的腳本發出的路徑該腳本,輸出將改爲:
/tmp/script1.sh
/tmp/script2.sh
我怎樣才能得到正確的價值?
僅供參考 - ''echo「$(readlink -f」$ 0「)」'將是更正確的表述。並且'$ 0'總是*懷疑;參見[BashFAQ#28](http://mywiki.wooledge.org/BashFAQ/028),包括最後一節(「爲什麼$ 0不是一個選項」)。 –