Из значения по умолчанию .bashrc:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
Результат проверяется выдачей команды эхо:
$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
Похоже, что ${debian_chroot:+($debian_chroot)} условный вставка будет выполнена для командной строки, но не для названия терминала. Похоже, автор .bashrc предполагал, что он отображается в обоих местах слева от user@host, но на самом деле он не попал в оба места. Оценка debian_chroot произошла при определении PS1, но в то время она не предназначалась для оценки, скорее она должна была быть оценена во время запроса. Корень проблемы заключается в том, что при построении строк "" цитирования оценок и '' цитирования нет. Оценка была ранней, потому что вся вещь, заключенная в \[ \], была предназначена для названия. Правильно ли интерпретация?
${debian_chroot:+($debian_chroot)} вставка зависит от наличия переменной $debian_chroot или /etc/debian_chroot.
Вот простой пример. На скриншоте ниже я подключен через ssh к моей малиновой Pi с Ubuntu Snappy на нем, у которого есть $debian_chroot переменная, установленная (по умолчанию), в то время как у Ubuntu у моего ноутбука нет. Вы можете увидеть итоговое приглашение на вкладках, и в обоих случаях переменная для $TERM равна xterm
Теперь, если переменная $TERM была чем-то другим, 't изменить название терминала GUI. Это может быть подключение к сеансу screen, например, где переменная $TERM - screen.