Pushd
pushd 目錄棧是如何儲存的?
在一個相關的問題中,有人說
pushd
當你的 shell 終止時,命令的目錄堆棧被清空。但是堆棧實際上是*如何儲存的呢?*我使用fish而不是 bash,並且命令的工作方式相同。我會假設pushd
(andpopd
) 獨立於您使用的 shell 工作。還是兩個外殼都有自己的實現?
目錄堆棧不會永久儲存在任何地方。Shell 只是將它保存在程序記憶體中的數組中
DIRSTACK
(對使用者修改有限制)。它甚至不是嚴格意義上的堆棧——bash 和 ksh 也允許您按指定的計數左右旋轉它。在 Bash 中,該
dirs
命令以各種方式清除或顯示堆棧、popd
刪除任何指定的目錄、pushd
添加目錄或旋轉堆棧以更改為已儲存的任何目錄。pushd 堆棧並沒有像這樣“清除”。Pushd 是內置的 shell,而不是外部命令(無法更改 shell 自身的環境)。每個 shell 保留自己的推送數據,當該 shell 程序消失時,內容將被丟棄。