2011-10-25 109 views
2

我在後面寫了一個腳本,它會在linux中爲不喜歡命令行的人執行一些簡單的安裝過程,但似乎他們正在從一個位置(例如根目錄)運行腳本。所以我有一個解決方案,但試圖找出如何引用文件的位置。從另一個位置運行bash腳本,但引用了腳本的位置

例子。 我有一個文件夾/根/服務器/腳本調用Install.sh /腳本,它通過使用引用自身的以下內容:

SCRIPTSDIR=`pwd` 

但我接觸到的問題做SH運行從根這個腳本的人服務器/腳本/ Install.sh

我該如何讓SCRIPTS =引用文件所在的位置,而不是從哪裏運行?

謝謝,問你是否需要更多信息!

編輯:所有答案都很好,我打算把我需要的絕對路徑。

回答

5

您可以

dirname $0 

得到DIR如果你的腳本調用使用相對路徑,目錄名稱也將返回相對路徑。如果你想解決它由於某種原因,你可以做

readlink -f `dirname $0` 
1

您可以使用:

SCRIPTDIR=$(dirname $0) 

如果需要絕對路徑,然後嘗試:

cd $(dirname $0) 
SCRIPTDIR=$(pwd) 
cd - 
1

你可以添加類似於:

fullscriptpath=$(dirname $0) 
+1

ha哇,stackoverflow test of refl exes在它最好:)(3個幾乎相同的答案,在幾秒鐘內彼此)。 – mgalgs