スクリプトの完全なDIRSTACKをリストするために "dirs"をどのように取得しますか?

スクリプトの完全なDIRSTACKをリストするために "dirs"をどのように取得しますか?

私のテストスクリプト:

#!/bin/bash
dirs -p >> work_note.txt

10個のディレクトリスタックから上位1個のみを返すことができ、コマンドラインまたはdirs -pコマンドdirs -vラインを実行するとスタック全体を取得します。

見逃した部分についてのアドバイスや知識をいただきありがとうございます。

ノート 私の主な目標は、端末で何をしたかを覚えるために、DIRSTACKをファイルに書き込むログアウトプロセスを作成することです。私は通常複数の端末を実行しています。

答え1

これはDIRSTACKローカル変数であり、スクリプト、サブシェル、サブプロセスなどに渡されません。.bashrcスクリプトの代わりに関数にロードを使用することをお勧めします。

答え2

私はこのトリックを使用してすべてのセッションでディレクトリスタックを検索します。私はファイルとして保存しました。他の端末にインポート/エクスポートすることも可能

.bashrcでこの関数を定義してください。

stackd () 
{ 
    SAVEIFS=$IFS;
    IFS=$(echo -en "\n\b");
    builtin cd $@ && builtin pushd "$PWD" > /dev/null;
    dirs -l -p >> $HOME/.iostackd/dirstack && sort -u -o $HOME/.iostackd/dirstack $HOME/.iostackd/dirstack > /dev/null;
    IFS=$SAVEIFS
}

エイリアスを介してbuitin 'cd'をオーバーロードします。

alias cd='stackd "$1"'

関連情報