Имя вкладки терминала OS X Mountain Lion + открыть новую вкладку в том же каталоге

7

1) В Mountain Lion через Настройки вы можете изменить настройку Терминала, чтобы новая вкладка могла открываться в том же каталоге, что и вкладка открытия. (т.е. если я нахожусь в ~ / workspace и открываю новую вкладку, то новая вкладка будет в ~ / workspace).

2) Также в Mountain Lion возможно, чтобы заголовок вкладки автоматически отражал базовое имя текущего каталога с помощью следующей директивы в ~ / .profile:

# automatically change the title of the terminal window to the directory basename
PROMPT_COMMAND='echo -n -e "\033]0;${PWD##*/}\007"'

Однако это также, похоже, лишает терминал возможности открывать новую вкладку в том же каталоге, что и вкладка открытия. То есть наличие 2) делает 1) неэффективным. Есть ли способ исправить эту проблему, чтобы обе эти вещи могли происходить одновременно?

enter image description here

platypus
источник

Ответы:

10

По умолчанию PROMPT_COMMAND поведение определяется в /etc/bashrc и добавляет путь к рабочему каталогу в заголовок окна таким образом, что сохраняет Тот же рабочий каталог функциональность (как file:// URL), и даже позволяет просматривать каталоги предков по команда - щелкнув строку заголовка.

Если вы дополнительно хотите установить заголовок вкладки к базовому имени рабочего каталога, нужно сохранить оригинал PROMPT_COMMAND, В выбранном вами файле инициализации оболочки профиля пользователя используйте следующее:

function set_tab_title {
  echo -n -e "\033]0;${PWD##*/}\007"
}

PROMPT_COMMAND="set_tab_title ; $PROMPT_COMMAND"
Daniel Beck
источник
это сработало. Спасибо. Кстати, не могли бы вы рассказать мне немного о разнице между bashrc и profile, и / etc / bashrc vs ~ / .bashrc. Когда каждый из них загружается при запуске Apple Terminal? Еще раз большое спасибо!
platypus
@platypus Как эти файлы используются Bash , Кроме того, обратите внимание, что в Terminal.app OS X каждая оболочка представляет собой интерактивную оболочку входа в систему, тогда как в Linux это обычно просто интерактивные (не входящие в систему) оболочки. ~/.profile может использоваться другими программами оболочки.
Daniel Beck
Спасибо! Кажется, что ~ / .profile является последним загружаемым файлом, поэтому безопасно поместить в него все пользовательские конфигурации, такие как PROMPT_COMMAND, для загрузки терминалом. Ранее вы говорили, что PROMPT_COMMAND должен быть в ~ / .bashrc FWIW, не могли бы вы объяснить это немного?
platypus
1
@platypus Прочтите это снова. Он загружается только в том случае, если ничего другого не существует. PROMPT_COMMAND это то, что вы хотите для всех интерактивных оболочек. Так что, вероятно, он должен быть загружен, если вы запустите bash --login (при открытии новой вкладки), а также просто bash, Файл для этого ~/.bashrc, Если вы создаете ~/.bash_profile а также, что необходимо source ~/.bashrcв противном случае он не загружается.
Daniel Beck
Я рекомендую заменить echo -n -e с printf в этом случае, чтобы избежать интерпретации содержимого имени каталога путем отделения escape-последовательности от его содержимого (это также означает, что вы можете использовать мнемонику \e а также \a вместо восьмеричного для управляющих символов): printf '\e]0;%s\a' "${PWD##*/}"
Chris Page