Zsh показывает сбой каждый раз, когда я открываю свой терминал

Я использую Mac с OS X Yosemite и Zsh. Случайно я удаляю содержимое трех файлов ниже: .bashrc .bash_profile .profile После этого, когда я открываю свой терминал. Zsh покажет ошибку под последней информацией для входа, это меня смутило, и я хочу знать, почему.


person helloworld    schedule 26.03.2015    source источник
comment
Что вы имеете в виду под неудачей?   -  person svlasov    schedule 26.03.2015
comment
сбой - это слово ниже последней информации для входа. Это так же, как вы ввели неправильную команду.   -  person helloworld    schedule 27.03.2015


Ответы (2)


Zsh (по умолчанию) не читает из .bashrc, .bash_profile или .profile, поэтому содержимое этих файлов не имеет значения. Вы также не упомянули, какие .bashrc, .bash_profile и .profile были стерты… Эти файлы существуют как в вашем каталоге /Users/username, так и в /etc. Файлы, полученные zsh при запуске, перечислены в Справочная страница OS X zsh (man zsh в терминале) в разделе "ФАЙЛЫ ЗАПУСКА/ВЫКЛЮЧЕНИЯ". Единственная причина, по которой он вызывает один из ранее упомянутых файлов, заключается в том, что они явно были sourced в одном из файлов по умолчанию.

Мои предложения:

  • Проверьте содержимое /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, перейдя в «Настройки» -> «Основные» и изменив параметр «Оболочки, открытые с помощью:» с «Оболочка входа по умолчанию» на «Команда» (заполните другую оболочку, т.е. /bin/bash или /bin/sh). Если вы можете войти в систему с любой оболочкой, попробуйте следующее решение из этого вопроса:

    Ищем ошибку

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

    1. Disable the problematic configurations
    2. Откройте терминал
    3. Проверьте значение SHLVL: echo $SHLVL
    4. Повторно включите конфигурации
    5. Запустите новую z-оболочку из работающей оболочки с помощью zsh 2> zsh-error.log, это перенаправит stderr в файл 'zsh-error.log'.
    6. Проверьте значение SHLVL еще раз. Если оно больше предыдущего значения, выйдите из текущей оболочки (exit). (Пояснение ниже)
    7. Посмотрите «zsh-error.log» в текущем каталоге.

    Если zsh-error.log ничего не показывает, вы можете вместо этого запустить zsh -x 2> zsh-error.log на шаге 5. Это обеспечивает полный отладочный вывод всего, что делает zsh. Это может стать довольно огромным.

    Как следует из ответа, эти журналы могут стать огромными, если вы используете справочные файлы при запуске. Просто голая оболочка должна привести к достаточно небольшому файлу журнала.

  • Наконец, вы можете получить список всех файлов, полученных zsh при запуске, запустив zsh -o sourcetrace.

Надеюсь это поможет.

person Dustin Wheeler    schedule 08.04.2015

Возможно, вы захотите просмотреть повторяющийся вопрос: Zshell запускается со статусом выхода 1 после удаления RVM

У него есть ответ, который решил проблему для меня:

Я нашел в своей системе файл .zlogin, содержащий некоторый код, связанный с rvm. Я удалил код, и проблема решена!

person fjuan    schedule 20.12.2019