$PS1環境変数の$はどういう意味ですか?

$PS1環境変数の$はどういう意味ですか?

$PS1たとえば、変数を確認すると、次のような結果が表示されます。

[root@ENGDADOS ~]# echo $PS1
[\u@\h \W]\$

ただし、この正確な変数を再入力すると、(root)から(通常の一般ユーザー)#に変わります。$

[root@ENGDADOS ~]# export PS1="[\u@\h \W]\$ "
[root@ENGDADOS ~]$

#からに変更せずにこの環境変数をどのように再入力できますか$?この構成はどこにありますか?

ベストアンサー1

この$文字は二重引用符やその他の状況で特別な意味を持ち、パラメータ(変数)およびコマンド拡張に使用されます。この文脈では、\特殊文字をエスケープするために使用されます。つまり、特殊文字を文字通り解釈します。たとえば、

$ a="1 2"
$ b="0 $a 3"
$ echo "$b"
0 1 2 3
$ b="0 \$a 3"
$ echo "$b"
0 $a 3

\$末尾にリテラル文字列を含めるには、一重引用PS1符を使用して特殊なシェル構成を無効にするか、エスケープして\ください$

$ PS1='[\u@\h \W]\$'
$ PS1="[\u@\h \W]\\\$"

Bashを使用している場合は、declare -p変数をで確認することをお勧めします。変数に末尾の空白が含まれている可能性があるため、使用しているためですecho

[root@hostname ~]# declare -p PS1
declare -- PS1="[\\u@\\h \\W]\\\$ "

Bashでは通常ファイルに定義されPS1ています。~/.bashrc

おすすめ記事