Как изменить приглашение bash в терминале gnome, не путая заголовок терминала в Ubuntu 16?

Мне не нравится, когда все длинные пути к каталогам занимают место в моем терминале, поэтому я обрезаю их через скрипт на python. Я отредактировал файл .bashrc и заменил PS1 на

export PROMPT_COMMAND='PS1="$(python /home/vinay/bash_promt.py)"'.

. И когда я это делаю, название терминала больше не работает. Он просто отображает Terminal, что раздражает. Я могу изменить заголовок вручную, выполнив следующую команду в bash:

PROMPT_COMMAND='echo -ne "\033]0;CUSTOM TITLE\007"'

Есть ли способ установить заголовок терминала для пользовательского приглашения, которое устанавливается в моем bash.

2
задан 15 May 2016 в 16:09

3 ответа

Для терминала гнома терминальный заголовок установлен через PROMPT_COMMAND который определяется в /etc/profile.d/vte-2.91.sh.

PROMPT_COMMAND, как определено в этом сценарии, делает две вещи:

  • изменяет терминальный заголовок с помощью OSC 0 escape-последовательностей (\033]0;NEW_TITLE\007),

  • изменяет понятие терминала текущего каталога с помощью escape-последовательности OSC 7 (\033]7;NEW_CURRENT_DIRECTORY\007, это факторизуется к __vte_osc7 функция).

Если Вы удаляете второй из Вашего PROMPT_COMMAND, Ваши недавно открытые окна терминала или вкладки не открылись бы в каталоге, где Вы стояли в предыдущем терминале. Скорее всего, Вы не хотите это.

Так, в Вашей оболочке запускают сценарии, после определения источника vte-2.91.sh необходимо создать предпочтительное PROMPT_COMMAND это устанавливает заголовок подобным образом на vte-2.91.sh, и устанавливает текущий рабочий каталог точно, поскольку он сделан по умолчанию.

Я не знаю ни о каком способе относиться к PS1разрешенное значение (то есть, после замены именем пользователя и таким) внутри PROMPT_COMMAND или где-либо еще (уже не говоря об отфильтровывают escape-последовательности, такие как цветные изменения). Если Вы хотите видеть ту же строку в своей подсказке и в заголовке окна, я полагаю, что необходимо копировать конструкцию той строки для PS1 и PROMPT_COMMAND.

1
ответ дан 16 May 2016 в 02:09
  • 1
    Необходимо быть в состоянии сделать и обновление и обновление, или в терминале или в Ubuntu Software. В терминале работает sudo apt update для обновления баз данных репозитория и sudo apt upgrade для обновления пакетов. ИЛИ в Ununtu Software, выберите Updates-tab, нажмите на значок обновления (круглая стрелка) и когда это закончилось, нажмите на Update. Лично, я предпочитаю терминальный путь, так как легче видеть то, что продолжается. – Soren A 31 October 2017 в 01:21

Это будет работать на Вас

, открывают ~/.bashrc. Найдите строку, которая говорит:

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

Комментируют эту строку, путем помещения # символ перед ним:

# PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

Теперь добавляют эту строку (можно хотеть поместить ее сразу после закомментированной строки):

PROMPT_COMMAND='echo -ne "\033]0;Custom Name\007"'

Замена Custom Name с тем, чем Вы хотите изменить Терминальный заголовок, чтобы быть.

Hope это помогает.

0
ответ дан 16 May 2016 в 02:09

Escape-последовательностью для использования является ESC] 2; новый titleBEL, где ESC и BEL являются Escape и символами звонковой сигнализации. Как \[\e]2;NEWTITLE\a\]. Используя escape-последовательности #Bash, изменяя заголовок в Вашей подсказке похож:

export PS1='\[\e]2;new title\a\]prompt > ' документ касательно

Таким образом, пример многоцветной усеченной подсказки удара, которая также имеет пользовательский терминальный заголовок:

export PS1='\[\e]2;$PWD\a\]\e[93m$USER\e[97m@\e[90m$HOSTNAME \e[93m$ \e[0m'

В том примере терминальный заголовок будет всегда отражать существующий рабочий каталог ($PWD) и терминальная подсказка будет всегда похожа на следующее независимо от того, в каком каталоге Вы находитесь: user@hostname $.

Можно заменить $PWD с CUSTOM TITLE заставить терминальный заголовок всегда отразиться CUSTOM TITLE.

Обновление
Будьте осторожны если не переносящиеся непечатные символы в \[ и \]. Это работает без него, и я делал его без них в течение многих лет. Однако как я узнал сегодня с некоторыми установками, это может вызвать некоторые проблемы в терминале. Ниже более чистая версия с помощью переменных и перенося цветовые коды:

T_YELLOW='\[\e[93m\]'
T_WHITE='\[\e[97m\]'
T_GRAY='\[\e[90m\]'
T_DEFAULT='\[\e[0m\]'
T_TITLE='\[\e]2;$PWD\a\]'
export PS1="${T_TITLE}${T_YELLOW}$USER${T_WHITE}@${T_GRAY}$HOSTNAME${T_YELLOW} $ ${T_DEFAULT}"
0
ответ дан 2 December 2019 в 04:56

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

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