这是《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)"%/*}"