Bash PS1は変数を評価しません。

Bash PS1は変数を評価しません。

PS1プロンプトを次に設定しようとしています。

/usr/local/src mario

だから私は.bash_profileで次のコードを使用しました。

export PS1=" \w \u\[$(tput sgr0)\]"

私は最終的に:

 \w \u\[$(tput sgr0)\]

アイデアはありますか?

文字列連結を使用して必要なものを取得できますが、これを行う必要があるのは奇妙です。

ベストアンサー1

あなたのシェルはおそらくbash。に変更してくださいchsh

また、一部の値には問題があります$PS1

PS1=" \w \u\[$(tput sgr0)\]"

$(...)設定すると評価されますが、PS1一度だけ実行されます。tput sgr0プロンプトが表示されるたびに実行するには、単一引用符を使用します。

PS1='\w \u\[$(tput sgr0)\] \$ '

(また、値の先頭から最後に初期スペースを移動し、\$それを追加してプロンプトとコマンドラインを読みやすくしました。

設定することもできます。

PS1="\w \u \$ "

その後、設定

PROMPT_COMMAND="tput sgr0"

各プロンプトが表示される前に実行されますtput sgr0(何をしているのかわからないので、これが意味があるかどうかはわかりませんが、施設はそこにあります)。

現在、シェルセッションに対してのみ設定するのは妥当であるため、エクスポートやPS1エクスポートは不要です。PROMPT_COMMAND

おすすめ記事