"pushd"ディレクトリスタックを永久に作成します。

"pushd"ディレクトリスタックを永久に作成します。

いいですね。簡単な質問です。私はpushdコマンドを使用してリストにさらに多くの作業ディレクトリを追加できることを誤って知りました。これは便利です。しかし、再起動やログアウト後も維持されるように、このリストを永久に作成する方法はありますか?

答え1

~/.bashrc必要に応じて、ファイルにディレクトリスタックを事前入力できます。

for dir in "$HOME/dir" /usr/src /usr/local/lib; do
    pushd -n "$dir" >/dev/null
end

または、ディレクトリを配列に入れてそこで使用するには、次の手順を実行します。

dirstack=( "$HOME/dir"
           /usr/src
           /usr/local/lib )

for dir in "${dirstack[@]}"; do
    pushd -n "$dir" >/dev/null
end

unset dirstack

を使用すると、-n実際にはpushd作業ディレクトリが変更されず、指定されたディレクトリがスタックに追加されるだけです。

必要に応じて、配列の値DIRSTACK(ここでは変数名を大文字で指定)を格納できます。現在のディレクトリスタックをファイルに配置し、あらかじめ定義された配列を使用する代わりに~/.bash_logoutそのファイルを読みます。~/.bashrc

存在する~/.bash_logout

declare -p DIRSTACK >"$HOME/.dirstack"

存在する~/.bashrc

if [ -f "$HOME/.dirstack" ]; then
    source "$HOME/.dirstack"
fi

複数の端末を使用している場合、これがどのようにうまく機能するかわかりません。.dirstack端末がbashログインシェルとして実行されている場合は、終了するたびにこのファイルを上書きします。

関連情報