Почему Терминал не соблюдает предпочтения?
Где-то на прошлой неделе мой Терминал перестал соблюдать настройку «Новые вкладки открываются с: Тот же рабочий каталог». Тот же результат дало тестирование с «Новые окна ...».
Моя оболочка - zsh.
Я смог заставить это работать , следуя ответу Дэна Розенстарка. https://apple.stackexchange.com/a/340778/398648
# http://superuser.com/a/315029/4952
# Set Apple Terminal.app to resume directory... still necessary 2018-10-26
if [[ $TERM_PROGRAM == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]] {
function chpwd {
local SEARCH=' '
local REPLACE='%20'
local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
printf '\e]7;%s\a' "$PWD_URL"
}
chpwd
}
Но: я не знаю, как я мог определить это для себя или как я мог отладить аналогичную проблему .
Мы будем очень благодарны за любые советы или уловки, чтобы выяснить, что это за первые шаги Терминала.
Что не сработало:
- Переключение настроек для новой вкладки или нового окна
- Переименование или добавление
return
в первой строке.zshrc
,.zsh*
файлы - Все предложения на вкладке Открыть новый терминал в текущем рабочем каталоге не работают
Другая потенциально полезная информация:
- Настройки «Одинаковый профиль» / «Профиль по умолчанию» учитываются при изменении.
- Добавление
pwd
в качестве первой строки.zshrc
показывает, что каталог уже/home/<myuser>
- Я установил и удалил некоторые инструменты и проекты, в которых
nix
недавно (в том числеnix-darwin
)

Метаданные:
OS macOS Catalina 10.15.7 (19H2)
Terminal 2.10 (433)
zsh 5.7.1 (x86_64-apple-darwin19.0)
Ответы
Если вы нажмете «Escape sequence…» на этом снимке экрана, вы увидите следующее:

Однако это вам не говорит о том, что обычно об этом заботятся в файле /etc/zshrc_Apple_Terminal
, который вызывается из /etc/zshrc
. Есть несколько вещей, которые могут предотвратить /etc/zshrc_Apple_Terminal
вызов или переопределить то, что он пытается сделать:
- Вы запускаете Zsh с помощью
zsh -d
илиzsh -f
. - У вас есть файл
${ZDOTDIR:-$HOME}/.zshenv
или${ZDOTDIR:-$HOME}/.zprofile
в котором у вас естьsetopt NO_rcs
илиsetopt NO_globalrcs
- Параметр
$TERM_PROGRAM
не имеет значенияApple_Terminal
. - Zsh не имеет доступа на чтение
/etc/zshrc_Apple_Terminal
. - При
/etc/zshrc_Apple_Terminal
получении параметр$INSIDE_EMACS
не равен нулю. - Вы определяете функцию через
precmd
некоторое время после ее получения/etc/zshrc_Apple_Terminal
, которая затем переопределяет функцию, определенную вadd-zsh-hook
.
Что можно сделать для отладки:
- Запустите подоболочку без неглобальных файлов конфигурации и посмотрите, не возникает ли ошибка и там:
Если проблема не возникает в этой подоболочке, это означает, что проблема находится где-то в ваших неглобальных файлах точек. Вы можете получить список этих файлов, выполнивcd $(mktemp -d); HOME=$PWD ZDOTDIR=$PWD zsh
ls ${ZDOTDIR:-$HOME}/.z(log(in|out)|profile|sh(env|rc))(-^/)
- Перезапустите Zsh с помощью
exec zsh -vx
и изучите вывод с самого начала, чтобы увидеть, будет ли/etc/zshrc_Apple_Terminal
получен исходный код и не отменяет ли что-нибудь позднее установленный имprecmd
перехватчик.