我正在运行 Ubuntu VMVirtual Box和Vagrant:
vagrant@lucid64:~$ uname -a
Linux lucid64 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
我的 $PS1 变量实际上与提示不匹配,而且要复杂得多:
vagrant@lucid64:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
Run Code Online (Sandbox Code Playgroud)
我正在寻找 $PS1 和我的提示之间关系的解释,$USER@$HOST:$PWD\$如上所示。
例如,在我的普通笔记本电脑上,它承载了这个虚拟机并且是一台 Mac,它干净简单,如下所示:
~@12:10:20>echo $PS1
\w@\t>
Run Code Online (Sandbox Code Playgroud)
$PS1Ubuntu 中的默认值由三部分组成:
\[\e]0;\u@\h: \w\a\]
这是一个转义序列,它将终端标题文本设置为$USER@$HOST: $PWD.
\[并\]指示非打印字符序列的开始和结束。
\e 是一个 ASCII 转义字符。
]0;是在兼容终端中设置终端图标和标题的特定转义序列xterm
\u 扩展为当前用户的用户名。
@ 是文字@。
\h 扩展到主机名。
: 是文字冒号字符。
\w 扩展到当前工作目录。
\a 是一个 ASCII 铃字符。
${debian_chroot:+($debian_chroot)}
如果您在 chroot 环境中,这将扩展为括号中的 chroot 名称。
${var:+OTHER}评估为$OTHERifvar已设置,否则为空字符串。$debian_chroot是初始化/etc/bash.bashrc到文件内容中的变量/etc/debian_chroot。因此,如果您的 chroot 环境包含此文件,则提示将包含该文件的内容作为 shell 当前在哪个 chroot 中运行的指示。
\u@\h:\w\$
这是您通常看到的实际提示。
\u, @, \h, :,\w同上。
\$ 如果有效 uid 为零(即用户是 root),则扩展为数字符号 #,否则扩展为美元符号 $。
资源