每次打开终端时 Zsh 都显示失败

hel*_*rld 7 macos shell zsh oh-my-zsh

我使用的是装有 OS X Yosemite 和 Zsh 的 Mac。不小心,我删除了以下三个文件的内容: .bashrc .bash_profile .profile 之后,当我打开终端时。Zsh 将在上次登录信息下显示失败,这让我很困惑,我想知道为什么。

fju*_*uan 8

您可能想查看一个重复的问题:Zshell Startup with exit status of 1 after uninstalling RVM

它有一个答案为我解决了这个问题:

我在系统上发现了一个 .zlogin 文件,其中包含一些与 rvm 相关的代码。我删除了代码,问题解决了!


Dus*_*ler 5

Zsh(默认情况下)不会从.bashrc.bash_profile或读取.profile,因此这些文件的内容应该不重要。您也没有提到哪些 .bashrc.bash_profile、 和.profile被删除了\xe2\x80\xa6 这些文件同时存在于您的/Users/username目录和/etc. zsh 在启动时获取的文件列在OS X zsh 手册页man zsh在终端中)的“启动/关闭文件”下。它调用前面提到的文件之一的唯一原因是它们是否source在默认文件之一中显式定义。

\n\n

我的建议:

\n\n
    \n
  • /etc/zshenv检查(这是我的目录中唯一特定于 zsh 的文件)的内容etc。我的只有以下内容:

    \n\n
    # system-wide environment settings for zsh(1)\nif [ -x /usr/libexec/path_helper ]; then\n  eval `/usr/libexec/path_helper -s`\nfi \n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 您可以使用 zsh 登录吗?如果没有,可以使用其他 shell 登录吗?您可以在 OS X Terminal.app 中执行此操作,方法是转到“首选项”->“常规”,并将“Shells open with:”选项从“Default login shell”更改为 Command(填写另一个 shell, /bin/bash/bin/sh)。如果您可以使用任何 shell 登录,请尝试此问题中的以下解决方案:

    \n\n
    \n

    寻找错误

    \n\n

    所有 shell 输出都会发送到终端,因此您可以在启动时重定向它。当您在初始化期间查找错误消息时,我建议执行以下步骤:

    \n\n
      \n
    1. 禁用有问题的配置
    2. \n
    3. 打开终端
    4. \n
    5. 检查 的值SHLVLecho $SHLVL
    6. \n
    7. 重新启用配置
    8. \n
    9. 使用 ,从正在运行的 shell 中启动一个新的 z-shell zsh 2> zsh-error.log,这会将stderr重定向到文件“zsh-error.log”。
    10. \n
    11. 再次检查 的值SHLVL。如果它大于之前的值,则退出当前 shell ( exit)。(解释如下)
    12. \n
    13. 查看当前目录中的“zsh-error.log”。
    14. \n
    \n\n

    如果“zsh-error.log”未显示任何内容,您可能需要zsh -x\n 2> zsh-error.log改为在步骤 5 中运行。这提供了 zsh 所做的任何事情的完整调试输出。这可能会变得相当巨大。

    \n
    \n\n

    正如答案所暗示的,如果您在启动时获取 man 文件,这些日志可能会变得巨大。只需一个裸外壳就会产生一个相当小的日志文件。

  • \n
  • 最后,您可以通过运行 来检索启动时 zsh 来源的所有文件的列表zsh -o sourcetrace

  • \n
\n\n

希望这可以帮助。

\n