$PS1 환경 변수의 $는 무엇을 의미합니까?

$PS1 환경 변수의 $는 무엇을 의미합니까?

$PS1예를 들어 변수를 확인하면 다음과 같은 결과가 나타납니다.

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

하지만 이 정확한 변수를 다시 입력하면 (루트)에서 (보통 일반 사용자) #로 변경됩니다 .$

[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$

관련 정보