Pushdディレクトリスタックはどのように保存されますか?

Pushdディレクトリスタックはどのように保存されますか?

関連質問に誰かが言ったシェルが終了すると、コマンドのディレクトリスタックがpushdクリアされます。しかし、どのようにスタックは実際に保存されていますか?私は使うBashの代わりに、コマンドは同じように動作します。私はpushd(およびpopd)が使用しているシェルとは独立して動作すると仮定します。それとも両方のシェルには独自の実装がありますか?

ベストアンサー1

ディレクトリスタックはどこにも永久に保存されません。シェルはそれをプロセスメモリの配列に保存しますDIRSTACK(ユーザー修正の制限)。厳密に言えばスタックではありません。 bashとkshを使用すると、指定した数だけ左右に回転できます。

Bashでは、このdirsコマンドはスタックをさまざまに消去または表示し、popd指定されたディレクトリを削除し、pushdディレクトリを追加するか、スタックを回転してすでに保存されているディレクトリに変更します。

Pushdスタック自体は「削除」されません。 Pushdは外部コマンドではなく組み込みシェルです(外部コマンドはシェル自体の環境を変更できません)。各シェルは独自のプッシュデータを保持し、シェルプロセスが終了するとコンテンツは削除されます。

おすすめ記事