Bash PS1中的转义字符

Bash PS1中的转义字符,bash,shell,initialization,escaping,Bash,Shell,Initialization,Escaping,我正在使用如下命令启动bash的新会话: exec bash--init文件PS1=“[TEST]$PS1” 您不能将其与您的放在同一行,这应该可以: exec bash --init-file <(cat /etc/profile ~/.bashrc $ANOTHER_SCRIPT; echo 'PS1="[TEST] $PS1"') -i exec bash--init文件分号不考虑这一点吗?我还在[TEST]和现有PS1之间寻找一个空格。。。但是引用就可以了。@ajwood:我根据

我正在使用如下命令启动bash的新会话:
exec bash--init文件
PS1=“[TEST]$PS1”

您不能将其与您的
放在同一行,这应该可以:

exec bash --init-file <(cat /etc/profile ~/.bashrc $ANOTHER_SCRIPT; echo 'PS1="[TEST] $PS1"') -i

exec bash--init文件分号不考虑这一点吗?我还在[TEST]和现有PS1之间寻找一个空格。。。但是引用就可以了。@ajwood:我根据你的评论修改了我的答案。看看区别,更好地回答你的问题,就像我问题中的代码一样。。。为什么引用的不同会产生如此大的差异?@ajwood:单引号逃避了内容。双引号允许展开内容。您可以使用跟踪(
set-x
)进行比较。使用
尝试您的命令。。。set-x;回音“PS1…”…“;设置+x…
与使用
的我的命令相对。。。set-x;回声PS1。。。"..." ...'; 设置+x…
,您将看到一个巨大的差异。(使用real命令而不是
)我目前正在学习Perl,这解释了很多!谢谢有趣的是,execbash--init文件从“quotes”中的“quotes”更改为“quotes”中的“quotes”会破坏它!