2

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

Вот изображение моих терминальных настроек:

http://i.stack.imgur.com/TIIzN.png

Как вы можете видеть в общих настройках, «Новые вкладки, открытые с помощью» установлены в «Тот же рабочий каталог». Это не похоже на работу. Я думаю, что я помню, как это работало в старых версиях Terminal.

Моя оболочка входа по умолчанию установлена в /bin/zsh , а у меня нет ~/.zshrc .

Я хотел бы иметь возможность решить эту проблему, не устанавливая что-то вроде oh-my-zsh или добавляя что-то в ~/.zshrc . Это должно работать без всего этого. (По крайней мере, в iTerm2.)

3 ответа3

2

Простой способ убедиться, что опция Terminal.app «Новые окна / вкладки открываются с помощью: Same Working Directory» по-прежнему работает с zsh, поскольку ваша оболочка входа в систему дает команду zsh сообщать об изменениях в текущем рабочем каталоге Terminal.app через escape-последовательность. Я сделал это в моем .zshrc с этим:

# tell terminal.app about cwd so new tabs open in same dir
tell_terminal_cwd() {
   cwd=$(print -rD $PWD)
   echo -ne "\033]0;${cwd}\007"
}
precmd_functions+=(tell_terminal_cwd)

В инструкциях Terminal.app по этой теме говорится, что текущий рабочий каталог представлен в виде правильно закодированного файла:// URL, включая имя хоста, но я обнаружил, что вышеприведенное работает нормально и также хорошо выглядит в заголовке вкладки.

2

По умолчанию в OS X Bash настроен для передачи текущего рабочего каталога Терминалу, используя escape-последовательности в каждом приглашении, используя переменную среды PROMPT_COMMAND .

До OS X El Capitan 10.11 этот код находился в /etc/bashrc . В 10.11 и более поздних версиях он был перемещен в специфичный для терминала файл /etc/bashrc_Apple_Terminal а /etc/bashrc выполняет соответствующий специфичный для терминала файл.

Актуальные версии Oh My Zsh! иметь подобный код для связи рабочего каталога с Терминалом.

Наиболее вероятная причина, по которой это перестало работать, заключается в том, что вы изменили свою конфигурацию. Возможно, вы раньше использовали Bash или у вас установлен Oh My Zsh, а теперь нет. Другая возможность состоит в том, что вы использовали свою оболочку для настройки заголовка окна терминала или вкладки (он же «иконка»), чтобы он содержал путь к рабочему каталогу: для удобства в более старых конфигурациях, если рабочий каталог явно не установлен, но заголовок окна или вкладки содержит действительный локальный путь, Терминал будет рассматривать его как текущий рабочий каталог.

0

Как и вы, я хотел сделать это, не загружая все Oh-My-Zsh.

Оказывается, что по состоянию на 4e306887 или около того (почему у ОМЗ нет концепции «версий !?») Плохая практика разработки программного обеспечения. ಠ_ಠ), файл termsupport.zsh который они включают, обрабатывает это для вас. Вам также придется скопировать файл functions.zsh .


Лично я использую сверхлегкий (например, я прочитал весь код перед тем, как начать его использовать, потому что это файл размером ≤500 строк) Zgen.zsh . (Он явно поддерживает использование модулей ОМЗ и тому подобное, не загружая остальную часть ОМЗ!) Если вы решите сделать это, вот решение с этим:

if ! zgen saved

   ...

   # Steal omz's termsupport for Apple Terminal. (Hacky; will have to
   # watch to see if this changes.) - <http://superuser.com/a/1031708/22030>
   zgen load robbyrussell/oh-my-zsh lib/functions.zsh
   zgen load robbyrussell/oh-my-zsh lib/termsupport.zsh

   ...

fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .