Pushd目录栈是如何存储的?

Pushd目录栈是如何存储的?

在相关问题中有人说当您的 shell 终止时,该命令的目录堆栈pushd将被清空。但如何堆栈实际上是存储的吗?我用而不是 bash,命令的工作方式相同。我假设pushd( 和popd) 独立于您正在使用的 shell 工作。或者两个 shell 都有自己的实现吗?

答案1

目录堆栈不会永久存储在任何地方。 Shell 只是将其保存在进程内存中的数组中DIRSTACK(对用户修改有限制)。严格来说,它甚至不是一个堆栈——bash 和 ksh 也允许您按指定的计数左右旋转它。

在 Bash 中,该dirs命令以各种方式清除或显示堆栈、popd删除任何指定的目录、pushd添加目录或旋转堆栈以更改为已存储的任何目录。

Pushd 堆栈本身并未“清除”。 Pushd 是一个内置的 shell,而不是外部命令(外部命令无法更改 shell 自身的环境)。每个 shell 都会保留自己的推送数据,当该 shell 进程消失时,内容就会被丢弃。

相关内容