入力するたびにPS1文字列を再評価する必要がある

入力するたびにPS1文字列を再評価する必要がある

ユーザーがシェルプロンプトで Enter キーを入力するたびに、PS1 文字列が常に再評価されるようにするにはどうすればよいですか?

私の実際のところ:

n=A; PS1="$n"


n=B

プロンプトに A が表示され続けます。どうすれば解決できますか?

答え1

$PS1 変数は $n を 1 回使用しています。これは、$PS1 が最初に設定されるときに $n が評価され、その値に置き換えられるためです。これは、二重引用符を使用しているためです。bash では、割り当て時に二重引用符で囲まれた文字列内の変数が評価されます。

$PS1 に $n の現在の値を反映させたい場合は、$n を一重引用符で囲むか、ドル記号をエスケープする必要があります。

例えば:

PS1='$n'

または

PS1="\$n"

関連情報