2013-04-18 41 views
0

我有一個工具執行的shell腳本。 當它由該工具執行時,$ PWD的值由該工具設置。 但是當我手動執行腳本時,$ PWD的值是當前腳本的目錄。

現在我使用這個$ PWD環境變量來定位腳本中的不同文件位置。

但是,當我手動執行它的文件路徑得到改變,它會給出意想不到的結果。

任何建議如何在手動或通過該工具執行腳本時處理$ PWD值的此更改?

+0

您可以將腳本作爲可選參數提供給PWD:如果設置了,則使用它。否則,照常工作。 – fedorqui

+0

'PWD'通常指當前目錄。如果你想要一個變量來表示別的東西,爲什麼你不使用一個不同的變量名? – Shahbaz

+0

@fedorqui在這兩種情況下通過手動或通過工具執行$ PWD的腳本值都存在,但它是不同的:( – BSalunke

回答

0

如果您需要訪問該腳本本身所在的目錄,在bash,那麼你可以使用

script_dir=$(readlink -f ${0%/*}) 

它採用相對路徑的腳本($0),切斷腳本名稱並將其轉換到完整的路徑。