Почему Терминал не соблюдает предпочтения?

Dec 10 2020

Где-то на прошлой неделе мой Терминал перестал соблюдать настройку «Новые вкладки открываются с: Тот же рабочий каталог». Тот же результат дало тестирование с «Новые окна ...».

Моя оболочка - 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)

Ответы

3 MarlonRichert Dec 28 2020 at 03:43

Если вы нажмете «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перехватчик.