jallersma Asked: 2020-01-08 01:39:20 +0800 CST2020-01-08 01:39:20 +0800 CST 2020-01-08 01:39:20 +0800 CST pushd 目录栈是如何存储的? 772 在一个相关的问题中,有人说pushd当你的 shell 终止时,命令的目录堆栈被清空。但是堆栈实际上是如何存储的呢?我使用fish而不是 bash,并且命令的工作方式相同。我会假设pushd(and popd) 独立于您使用的 shell 工作。还是两个外壳都有自己的实现? pushd 1 个回答 Voted Best Answer Paul_Pedant 2020-01-08T01:46:01+08:002020-01-08T01:46:01+08:00 目录堆栈不会永久存储在任何地方。Shell 只是将它保存在进程内存中的数组中DIRSTACK(对用户修改有限制)。它甚至不是严格意义上的堆栈——bash 和 ksh 也允许您按指定的计数左右旋转它。 在 Bash 中,该dirs命令以各种方式清除或显示堆栈、popd删除任何指定的目录、pushd添加目录或旋转堆栈以更改为已存储的任何目录。 pushd 堆栈并没有像这样“清除”。Pushd 是内置的 shell,而不是外部命令(无法更改 shell 自身的环境)。每个 shell 保留自己的推送数据,当该 shell 进程消失时,内容将被丢弃。
目录堆栈不会永久存储在任何地方。Shell 只是将它保存在进程内存中的数组中
DIRSTACK
(对用户修改有限制)。它甚至不是严格意义上的堆栈——bash 和 ksh 也允许您按指定的计数左右旋转它。在 Bash 中,该
dirs
命令以各种方式清除或显示堆栈、popd
删除任何指定的目录、pushd
添加目录或旋转堆栈以更改为已存储的任何目录。pushd 堆栈并没有像这样“清除”。Pushd 是内置的 shell,而不是外部命令(无法更改 shell 自身的环境)。每个 shell 保留自己的推送数据,当该 shell 进程消失时,内容将被丢弃。