Я использую Терминал Mac с полными вкладками, каждая из которых назначена отдельному рабочему каталогу. Я настроил его для открытия новых окон с тем же рабочим каталогом. Тем не менее, когда я закрываю терминал и перезапускаю его, он перестраивает все вкладки, их имена, даже показывает мне последний вывод в окне, но остается в домашнем каталоге пользователя и не восстанавливает последний рабочий каталог каждой вкладки.
Что я делаю неправильно? Может ли это быть вызвано некоторыми настройками в ~/.bash_profile
?
Ответы:
(Для справки мы говорим о функции возобновления Mac OS X Lion 10.7 и более поздних версий.)
Терминал автоматически восстанавливает рабочий каталог, если вы используете оболочку по умолчанию, bash. Если вы используете какую-то другую оболочку, вам нужно будет адаптировать код
/etc/bashrc
для отправки escape-последовательности для передачи рабочего каталога в терминал, чтобы он мог позже восстановить каталог для возобновления. Если вы используете zsh, посмотрите мой ответ на Resume Zsh-Terminal (OS X Lion) , в который я включил соответствующий код для zsh.Если у вас есть пользовательские настройки
~/.bash_profile
или~/.bashrc
вам может потребоваться убедиться, что вы не отменяете поведение по умолчанию, изменив/etc/bashrc
настройки. В частности, он устанавливаетPROMPT_COMMAND
переменную среды для отправки escape-последовательности в каждом приглашении. Если вы настраиваете эту переменную, вам нужно добавить префикс или добавить код к текущему значению, например:Также, как правило,
~/.bash_profile
следует выполнить~/.bashrc
:источник
.bashrc
(хотя я не смог определить какую-либо настройку командной строки. Теперь я делаю следующее: 1. Откройте новое окно терминала (открывается в домашнем каталоге моего пользователя) 2. Документы CD 3. Закройте терминал 4. Откройте терминал 5 Окно снова открывается, отображая вывод об изменении каталога, но все еще находясь в домашнем каталоге пользователя~/.bash_profile
,~/.bash_login
и~/.profile
.~/.bashrc
согласно вашему предложению в вашем ответе./etc/bashrc
Похоже, мой был подправлен установочным скриптом или чем-то еще. Был файл,/etc/bashrc.orig
который содержал некоторые дополнительные настройки (я предполагаю, что это исходная настройка) gist.github.com/3273170 . Повторно добавив это к/etc/bashrc
сделанным вещам, работающим как ожидалось снова. Большое спасибо за помощь и терпение!Если вы используете Bash-It, вы можете столкнуться с проблемой
$PROMPT_COMMAND
перезаписи им.Как уже упоминалось, он используется OS X для восстановления cwd в новых вкладках. Баш должен добавлять значения, а не переопределять их.
Но временным решением проблемы было бы добавить следующую строку к вашему
~/.bash_profile
Для получения дополнительной информации о системе отслеживания проблем для обновлений: https://github.com/revans/bash-it/issues/240
И ссылка Apple для этого https://developer.apple.com/library/mac/documentation/darwin/reference/manpages/man1/sh.1.html
источник
Я написал сообщение в блоге о том, как сделать это для csh / tcsh, прежде чем я нашел этот ответ; если кто-то приходит сюда в поисках решения для этих оболочек, вот оно:
Добавьте это к вашему
.cshrc
или.tcshrc
по необходимости. (Внешний оператор if необходим, чтобы избежать ошибки при удаленном входе в систему, как в случае с ssh. Это должен быть отдельный оператор из-за правил расширения переменных в tcsh.)Как и встроенная поддержка Apple bash, в этом решении не используются никакие внешние программы, кроме
printf
как за счет выхода из пробелов. Если вам нужно избежать других специальных символов, вам придется потрудиться, чтобы найти более полное решение.источник