Как автоматически установить заголовок терминала на имя каталога без пути

11

В настоящее время заголовок моего терминала / вкладки bash устанавливается на основе каталога, в котором я нахожусь. Например:

bob@bobscomputer:~/i/had/some/great/pie/yesterday

Это не очень полезно, если у меня открыто несколько вкладок рядом. Например, если у меня есть 4 вкладки из вышеупомянутого каталога, открытые рядом, все, что я вижу, это

bob@bobscomputer:~/i/had...

4 раза.

Я бы хотел, чтобы все заголовки моего терминала автоматически устанавливались только на последнюю часть пути. В приведенном выше примере я бы хотел, чтобы заголовок был

yesterday

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

Есть ли способ сделать это?

Вялая лягушка
источник
Для ZSH, посмотрите здесь: superuser.com/a/1328085/122021
LAFK говорит восстановить Monica

Ответы:

11

Почему вы хотите сделать это без изменения переменной PS1? Это правильный способ сделать это.

Если вы выполните следующее, вы получите то, что вы хотите:

export PS1="\[\e]0;\W\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

Это просто принимает приглашение по умолчанию:

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

... и заменить \u@\h: \wна \W.

Вы можете сделать то же самое с любой командой, которая отображает правильный escape-код:

echo -en "\e]0;${PWD##*/}\a"

... но тогда вы будете постоянно сражаться с bash, чтобы помешать ему использовать PS1 (лучший способ).

Стивен К
источник
2
Спасибо - я не понял, что PS1 устанавливает заголовок и подсказку независимо. В моем .bashrc, в случае "$ TERM" в xterm * | rxvt *), я установил PS1 = "[\ e] 0; $ {debian_chroot: + ($ debian_chroot)} \ W \ a] $ PS1" и это именно то, что я хотел.
Staring Frog
Этот вопрос хорошо объясняет, что все это означает, что PS1 gobbledygook означает: askubuntu.com/questions/404341/…
congusbongus
3

Да. Prepend: \[\e]0;\W\a\]к вашей PS1. Это не изменит внешний вид ваших запросов, но автоматически установит в заголовке вкладок вашего терминала базовое имя текущего рабочего каталога.

LikeTheRock
источник