无法理解 Zsh 的 autopushd 的好处

Léo*_* 준영 6 zsh

我在 .zshrc

 setopt autopushd
Run Code Online (Sandbox Code Playgroud)

它使 cd 的行为类似于 pushd。这意味着我们根本没有堆栈。当我使用它时,我根本没有使用过堆栈,因为它从我身上删除了堆栈。

我不确定 autopushd 有什么好处。

autopushd 有什么好处?

crb*_*crb 11

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 $
Run Code Online (Sandbox Code Playgroud)

autopushd 意味着即使你输入 'cd',你也会得到输入 'pushd' 的效果,你不记得你想使用它,直到你想“伙计,我真的希望我能回到我以前的地方”。然后,您可以通过目录历史记录返回。

知道您始终可以通过键入“cd -”更改到您之前所在的目录(而不是父目录),这一点很有用。

这是另一个很好的文章

编辑为什么在可以使用 cd - 时使用 pushd ?

cd /foo/bar
cd /baz
cd /somewhere/else
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

您现在可以保证在 /var/foo 中。