Bash 无法为';动态添加转义序列;PS1和x27;

Bash 无法为';动态添加转义序列;PS1和x27;,bash,.bash-profile,Bash,.bash Profile,假设我希望动态包含转义序列: if [ -n $something ]; then user="\u" else user="admin" fi PS1='$user@\h$ ' 问题是,我的提示不是填写用户名,而是如下所示: \u@ubuntu-1$ andreas@ubuntu-1$ 即使我避开了反斜杠(user=“\\u”),它仍然不会打印出用户名。如何获得如下所示的提示: \u@ubuntu-1$ andreas@ubuntu-1$ 当您试图插入变量并希

假设我希望动态包含转义序列:

if [ -n $something ]; then
    user="\u"
else
    user="admin"
fi
PS1='$user@\h$ '
问题是,我的提示不是填写用户名,而是如下所示:

\u@ubuntu-1$ 
andreas@ubuntu-1$ 
即使我避开了反斜杠(
user=“\\u”
),它仍然不会打印出用户名。如何获得如下所示的提示:

\u@ubuntu-1$ 
andreas@ubuntu-1$ 

当您试图插入变量并希望它们展开时,请使用双引号

您还有另一个选择,而不是处理
\u
和解释时的复杂情况

if [ -n $something ]; then
    user=`whoami`
else
    user="admin"
fi
PS1="$user@\h$ "

你希望你的提示看起来像什么?你使用什么版本的bash?我刚刚检查了您的示例,它确实按预期工作(BASH_VERSION=
BASH-3.2.51(1)-发行版
)。@merlin2011我希望我的提示看起来像我给出的最后一个示例:
andreas@ubuntu-1$
@user3159253发现了问题,我给出的示例使用双引号,使用单引号。此示例已使用此新信息更新。根据需要,您可以使用任意类型的引号。单引号通常用于延迟扩展,直到实际显示
PS1
,例如,
PS1='$(日期)
以显示当前日期,而不是定义
PS1
的日期。