进入可执行命令所在的目录

进入可执行命令所在的目录

这是《The Productive Programmer》一书中的命令行技巧:

pushd `which java`/..

作者说这个命令可以暂时去可执行命令所在的目录爪哇生活。

当我在 Linux 中输入这个命令时,Bash 抱怨道:

bash: pushd: /usr/bin/java/..: Not a directory

我还尝试/usr/bin/java/..直接将目录更改为:

$ pushd /usr/bin/java/.. 
bash: pushd: /usr/bin/java/..: Not a directory

为什么我失败了?为什么不能使用 更改目录/..?如何修改该命令来完成相同的任务?

答案1

失败是因为它/usr/bin/java是一个文件,而不是一个目录。

你可以做:

cd "$(dirname "$(which java)")"

或者使用参数扩展zsh

cd "${"$(which java)"%/*}"

相关内容