Конечный Is .bashrc correctly setting the graphical title?

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?

0
задан 30 December 2015 в 03:29

2 ответа

Я сказал бы, что все это не важно. debian_chroot установлен в /etc/bash.bashrc . Это - ставка ярмарки, что, в нормальном ходе вещей, если бы переменная была установлена, новая оболочка была запущена - почему /etc/bash.bashrc был бы получен иначе? И в этом случае, ~/.bashrc был бы получен также. Так, или переменная установлена, когда PS1 установлен и изменен в строках, Вы показываете, или это не, и это не будет. Эффект является тем же.

я могу только предположить, почему исходный разработчик использовал одинарные кавычки в то время как установка PS1 во-первых. По-видимому, dev изучил осторожность и использует "" только при необходимости, который это при изменении PS1.

Примечание, что :+ просто средства ничего не делают, если переменная сброшена.

3
ответ дан 29 September 2019 в 23:34

${debian_chroot:+($debian_chroot)} вставка зависит от присутствия $debian_chroot переменная или /etc/debian_chroot файл.

Вот простой пример. В реве снимка экрана я подключен через ssh к своему Raspberry Pi с Ubuntu, Мгновенным на нем, который имеет $debian_chroot переменный набор (по умолчанию), в то время как Ubuntu моего ноутбука не делает. Вы видите получающуюся подсказку на вкладках, и в обоих случаях переменная для $TERM xterm

enter image description here

Теперь, если бы переменная $TERM была чем-то еще, то она не изменила бы заголовок терминала GUI. Это могло соединяться с screen сессия, например, где переменная $TERM screen.

1
ответ дан 29 September 2019 в 23:34

Другие вопросы по тегам:

Похожие вопросы: