2016-11-25 88 views
2

我有一个shell脚本的位置:获取shell脚本的目录的父目录

/node_modules/.bin/exec.sh 

在exec.sh剧本,我想获得该脚本包含在目录的父目录的路径(不PWD/CWD!)。我可以得到包含目录,如下所示:

`dirname $0` 

这将产生:

/node_modules/.bin 

但我希望得到的一个目录更高,我只是想获得

/node_modules 

我无法搜索答案,我的猜测是:

`dirname $1` 

但只是一个猜测,不知道这是否正确。任何人都可以解释如何做到这一点以及它是如何工作的?

+0

没有,一点都没有,这有没有关系CWD /密码 –

+0

@AlexanderMills它与此有关。获取目标的父目录。然后获取* that *目录的父目录。 – Ouroborus

+0

不,它与包含脚本的目录,而不是当前的工作目录或当前的工作目录有关,它们可能会非常不同......想象一下,执行脚本就像这样../../exec.sh,虽然 –

回答

7

运行dirname两次(嵌套)。

~$ dirname $PWD 
/home 
~$ dirname `dirname $PWD` 
/
~$ 
+0

这很接近,但我认为它是$(dirname \'dirname $ 0'') –

1

我相信答案是

$(dirname $(dirname "$0")) 

不要忘了双引号“$ 0”