関連する質問で 誰かが述べています シェルが終了すると、pushd
コマンドのディレクトリスタックが空になります。しかし、howスタックは実際に格納されていますか? bashの代わりに fish を使用し、コマンドは同じように機能します。 pushd
(およびpopd
)は、使用しているシェルとは独立して機能すると思います。または、両方のシェルに独自の実装がありますか?
ディレクトリスタックは永続的な場所には保存されません。シェルはそれをプロセスメモリの配列DIRSTACK
(ユーザーによる変更に制限があります)に保持するだけです。厳密にはスタックではありません。bashとkshを使用すると、指定した数だけ左右に回転させることもできます。
Bashでは、dirs
コマンドはさまざまな方法でスタックをクリアまたは表示し、popd
は指定されたディレクトリを削除し、pushd
はディレクトリを追加するか、スタックを回転して次のいずれかに変更します。すでに保存されているdir。
プッシュされたスタックは、そのように「クリア」されません。 Pushdはシェルに組み込まれているものであり、外部コマンドではありません(シェル自体の環境を変更することはできません)。各シェルは独自のプッシュされたデータを保持し、そのシェルプロセスがなくなると、コンテンツは破棄されます。