PS1文字列は、入力されるたびに再評価する必要があります。

PS1文字列は、入力されるたびに再評価する必要があります。

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

私の実際の状況:

n=A; PS1="$n"


n=B

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

答え1

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

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

たとえば、

PS1='$n'

または

PS1="\$n"

関連情報