我在.zshrc 中有
setopt autopushd
它使 cd 的行为类似于 pushd。这意味着我们根本没有堆栈。当我使用它时,我根本没有使用堆栈,因为它会从我这里删除堆栈。
我不确定 autopushd 有什么好处。
autopushd 有什么好处?
答案1
pushd 类似于 cd,但它还会将当前目录推送到堆栈上。您可能在 /some/deep/directory 中,然后需要在 /var/www 中浏览一段时间:
crb@server /some/deep/directory $ pushd /var/www/
/var/www /some/deep/directory
crb@server /var/www $ [do some stuff]
crb@server /var/www $ popd
/some/deep/directory
crb@server /some/deep/directory $
autopushd 意味着即使您输入了“cd”,您也会得到输入“pushd”的效果,您不记得您想要使用它,直到您想到“天哪,我真的希望我能回到我之前的位置”。然后,您可以通过 popd 返回目录历史记录。
知道您可以随时通过键入“cd -”更改到此目录之前所在的目录(而不是父目录)很有用。
编辑如果可以使用 cd - 为什么要使用 pushd 呢?
cd /foo/bar
cd /baz
cd /somewhere/else
cd - 只能带您到达 /baz。pushd 将带您回到您输入“cd /foo/bar”之前所在的位置。
目录堆栈在脚本中特别有用,您不能只通过命令历史记录返回并识别您所在目录的名称:
pushd /var/foo
# run a command, which might well change your PWD at the end of its execution - especially if it fails
popd
现在保证您位于 /var/foo。
答案2
AUTO_PUSHD 选项允许您使用 cd 返回到您曾经 cd 到过的任何目录。如果没有此选项,您只能返回到您曾经 cd 到过的上一个目录,但使用此选项,您可以使用类似命令cd -5
返回到您访问过的第 5 个目录。