Я использую Mac с OS X Yosemite и Zsh. Случайно я удаляю содержимое трех файлов ниже: .bashrc .bash_profile .profile После этого, когда я открываю свой терминал. Zsh покажет ошибку под последней информацией для входа, это меня смутило, и я хочу знать, почему.
Zsh показывает сбой каждый раз, когда я открываю свой терминал
Ответы (2)
Zsh (по умолчанию) не читает из .bashrc
, .bash_profile
или .profile
, поэтому содержимое этих файлов не имеет значения. Вы также не упомянули, какие .bashrc
, .bash_profile
и .profile
были стерты… Эти файлы существуют как в вашем каталоге /Users/username
, так и в /etc
. Файлы, полученные zsh при запуске, перечислены в Справочная страница OS X zsh (man zsh
в терминале) в разделе "ФАЙЛЫ ЗАПУСКА/ВЫКЛЮЧЕНИЯ". Единственная причина, по которой он вызывает один из ранее упомянутых файлов, заключается в том, что они явно были source
d в одном из файлов по умолчанию.
Мои предложения:
Проверьте содержимое
/etc/zshenv
(это единственный zsh-файл в моем каталогеetc
). У моего есть только следующее:# system-wide environment settings for zsh(1) if [ -x /usr/libexec/path_helper ]; then eval `/usr/libexec/path_helper -s` fi
Можно ли вообще войти в систему с помощью zsh? Если нет, можете ли вы войти, используя другую оболочку? Вы можете сделать это в OS X Terminal.app, перейдя в «Настройки» -> «Основные» и изменив параметр «Оболочки, открытые с помощью:» с «Оболочка входа по умолчанию» на «Команда» (заполните другую оболочку, т.е. em>
/bin/bash
или/bin/sh
). Если вы можете войти в систему с любой оболочкой, попробуйте следующее решение из этого вопроса:Ищем ошибку
Весь вывод оболочки идет на терминал, поэтому вы можете просто перенаправить его при запуске. Поскольку вы ищете сообщения об ошибках во время инициализации, я бы предложил следующую процедуру:
- Disable the problematic configurations
- Откройте терминал
- Проверьте значение
SHLVL
:echo $SHLVL
- Повторно включите конфигурации
- Запустите новую z-оболочку из работающей оболочки с помощью
zsh 2> zsh-error.log
, это перенаправит stderr в файл 'zsh-error.log'. - Проверьте значение
SHLVL
еще раз. Если оно больше предыдущего значения, выйдите из текущей оболочки (exit
). (Пояснение ниже) - Посмотрите «zsh-error.log» в текущем каталоге.
Если zsh-error.log ничего не показывает, вы можете вместо этого запустить
zsh -x 2> zsh-error.log
на шаге 5. Это обеспечивает полный отладочный вывод всего, что делает zsh. Это может стать довольно огромным.Как следует из ответа, эти журналы могут стать огромными, если вы используете справочные файлы при запуске. Просто голая оболочка должна привести к достаточно небольшому файлу журнала.
Наконец, вы можете получить список всех файлов, полученных zsh при запуске, запустив
zsh -o sourcetrace
.
Надеюсь это поможет.
Возможно, вы захотите просмотреть повторяющийся вопрос: Zshell запускается со статусом выхода 1 после удаления RVM
У него есть ответ, который решил проблему для меня:
Я нашел в своей системе файл .zlogin, содержащий некоторый код, связанный с rvm. Я удалил код, и проблема решена!