计算目录相对于另一个路径的路径,其计算路径为绝对形式

问题描述:

我有一个应用程序的目录结构:bin,config,lib。计算目录相对于另一个路径的路径,其计算路径为绝对形式

在bin目录中我有一个bash脚本。我希望能够根据脚本文件在bin目录中的位置在config目录和lib目录的bash脚本中设置变量。

BIN_DIR = “$(CD -P ”$(目录名称 “$ {BASH_SOURCE [0]}”)“ & & PWD)”

:我可以为脚本,由做执行得到的目录名我的问题是:如何根据BIN_DIR计算config和lib目录的模块路径?

谢谢。

你可能只需要使用:

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

如果你有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