From the default .bashrc
is this:
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
The result is examined by issuing the начал command:
$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
It appears that the ${debian_chroot:+($debian_chroot)}
conditional insertion will be performed for the command line prompt but not for the терминал title. It appears the .bashrc
author несклоняйтесь it to be displayed in both ты нравишься just to the left of user@host
but in fact it did not make it into both ты нравишься. The evaluation of debian_chroot
happened in defining PS1 but it was not meant to be evaluated at that украдите, rather it was meant to be evaluated at the украдите of prompting. The root of the problem is that when building strings ""
quoting evaluates and ''
quoting does not. The evaluation was early because the whole thing enclosed in \[
\]
was meant for the title. Is interpretation correct?
Я сказал бы, что все это не важно. debian_chroot
установлен в /etc/bash.bashrc
. Это - ставка ярмарки, что, в нормальном ходе вещей, если бы переменная была установлена, новая оболочка была запущена - почему /etc/bash.bashrc
был бы получен иначе? И в этом случае, ~/.bashrc
был бы получен также. Так, или переменная установлена, когда PS1
установлен и изменен в строках, Вы показываете, или это не, и это не будет. Эффект является тем же.
я могу только предположить, почему исходный разработчик использовал одинарные кавычки в то время как установка PS1
во-первых. По-видимому, dev изучил осторожность и использует ""
только при необходимости, который это при изменении PS1
.
Примечание, что :+
просто средства ничего не делают, если переменная сброшена.
${debian_chroot:+($debian_chroot)}
вставка зависит от присутствия $debian_chroot
переменная или /etc/debian_chroot
файл.
Вот простой пример. В реве снимка экрана я подключен через ssh к своему Raspberry Pi с Ubuntu, Мгновенным на нем, который имеет $debian_chroot
переменный набор (по умолчанию), в то время как Ubuntu моего ноутбука не делает. Вы видите получающуюся подсказку на вкладках, и в обоих случаях переменная для $TERM
xterm
Теперь, если бы переменная $TERM
была чем-то еще, то она не изменила бы заголовок терминала GUI. Это могло соединяться с screen
сессия, например, где переменная $TERM
screen
.