Переменная PS1 по умолчанию на моем компьютере (Kubuntu 13.10) выглядит так:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
Я ищу ссылку на то, как работает переменная $ PS1, которая, как минимум, позволяет мне понять вышеуказанную переменную PS1.
PS1
в терминале, напримерPS1="How r u, \u?"
. Изменение будет длиться только до тех пор, пока вы не закроете терминал.Ответы:
Ссылки
До сих пор не было единой ссылки на все, что может быть указано в приглашении Bash - но поскольку эта функция развивалась десятилетиями и, вероятно, варьируется от дистрибутива к дистрибутиву, возможно, это слишком много, чтобы спрашивать. Я попытался обобщить то, что я нашел наиболее полезным здесь.
Это практическое руководство является наиболее полным, но очень длинным и бессвязным. Некоторые из более полезных разделов:
\[
и\]
необходимо.Это руководство объясняет, как
${}
работает Bash в целом, и этот вопрос Ask Ubuntu объясняет немного больше о том, как это работаетdebian_chroot
.Между тем, я думаю, что каждый символ в стандартной переменной Ubuntu PS1 объясняется.
Объяснение приглашения Ubuntu
Подсказка состоит из трех частей:
\[\e]0;\u@\h: \w\a\]
устанавливает строку заголовка окна xterm:\[
начинает раздел непечатаемых символов\e]0;
является escape-последовательностью для 'set xterm title' (я полагаю, что числа, отличные от 0, будут устанавливать другие свойства xterm, хотя я не проверял это)\u@\h: \w
название для использования (см. ниже\u
,\h
и\w
)\a
отмечает конец заголовка\]
отмечает конец непечатаемых символов${debian_chroot:+($debian_chroot)}
расширяется до значения $ debian_chroot в скобках, если установлено значение $ debian_chroot. Смотрите этот вопрос для получения дополнительной информации о $ debian_chroot.\u@\h:\w\$
сама подсказка:\u
расширяется до текущего имени пользователя\h
расширяется до текущего имени хоста\w
расширяется до текущего рабочего каталога\$
расширяется#
для root и$
для всех остальных пользователейисточник
Согласно справочнику Bash ,
PS1
это:Некоторые другие хорошие ссылки могут быть:
PS1 подсказка для Linux / Unix
Что делает "$ {debian_chroot: + ($ debian_chroot)}" в моей подсказке терминала?
Bash Shell PS1: 10 примеров, чтобы сделать ваш Linux быстрым, как Анджелина Джоли
источник
\[
и\]
хотя - есть ли у вас какие-либо ссылки на это?\[
- начинайте последовательность непечатаемых символов, которые можно использовать для встраивания последовательности управления терминалом в приглашение;\]
- завершить последовательность непечатных символов. Просто не торопитесь и внимательно читайте;)ss64.com, кажется, имеет лучшую ссылку, которую я нашел.
Это объясняет следующие переменные:
\[ ... \]
Определяет ряд непечатных символов. Они необходимы для правильного отслеживания положения курсора.В
\e
вашем приглашении начинается escape-последовательность. Подробнее об этом здесь (обратите внимание, «Esc» на этой странице является\e
последовательность).tput
чтобы получить код выхода для вас.${debian_chroot:+($debian_chroot)}
это расширение параметра. Смотри здесь($debian_chroot)
если$debian_chroot
в противном случае ничего не установлено.источник