
$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
答え2
一重引用符を使用してください。
比較する:
root@d313d6954dee:/# echo '\u@\h:\w\$ '
\u@\h:\w\$
root@d313d6954dee:/# echo "\u@\h:\w\$ "
\u@\h:\w$