2012-03-09 137 views
1

我有一個應用程序的目錄結構:bin,config,lib。計算目錄相對於另一個路徑的路徑,其計算路徑爲絕對形式

在bin目錄中我有一個bash腳本。我希望能夠根據腳本文件在bin目錄中的位置在config目錄和lib目錄的bash腳本中設置變量。

BIN_DIR = 「$(CD -P 」$(目錄名稱 「$ {BASH_SOURCE [0]}」)「 & & PWD)」

:我可以爲腳本,由做執行得到的目錄名我的問題是:如何根據BIN_DIR計算config和lib目錄的模塊路徑?

謝謝。

回答

3

你可能只需要使用:

cd `dirname $0`/.. 
BASE_DIR=`pwd` 
cd - 
BIN_DIR=${BASE_DIR}/bin 
CONFIG_DIR=${BASE_DIR}/config 
LIB_DIR=${BASE_DIR}/lib 
+0

這不給絕對路徑。它提供了/../config – John 2012-03-09 13:57:49

+0

這樣的東西,在你沒提到的問題中,你正在尋找絕對路徑。 – vanje 2012-03-09 14:03:25

+0

你實際上在標題中說'相對於另一條路徑'。請澄清。 – 2012-03-09 14:04:38

2

如果你有BIN_DIR那麼你得到的絕對路徑與項目目錄:

PROJECT_DIR=`readlink -f $BIN_DIR/..` 

然後

CONFIG_DIR=$PROJECT_DIR/config 
LIB_DIR=$PROJECT_DIR/lib 
+0

+1:很好的使用readlink。 – 2012-03-09 14:14:28