如何在单引号中定义此PS1变量?

IQA*_*eas 2 syntax bash quotes ps1

.bashrc基于Debian的系统的默认文件设置$PS1如下:

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Run Code Online (Sandbox Code Playgroud)

令我困惑的是那${debian_chroot}部分.根据StackOverflow:bash中单引号和双引号之间的差异,如果在定义字符串时使用单引号,$则应将字符视为文字,而不是评估变量.

这是不是意味着Bash应该实际打印出来${debian_chroot:...,而不是该变量的值?或者这里涉及更多语法规则?

tha*_*guy 5

您通常是正确的,除了PS1在运行时再次扩展值作为生成提示的一部分.这特别是允许在运行时进行扩展.

PS1='$PWD: '$PWD在显示提示时展开,以便您始终可以看到当前目录.

PS1="$PWD: "$PWD定义提示时将展开,以便您始终可以看到定义提示时所在的目录.