zsh 启动报错(Powerline9k-theme 所示)
Zshell starting with an error (showed in Powerline9k-theme)
最近我安装了 Zshell 而不是 Bash。在此期间,然后我看到我的 $PATH
有 7 英里长,- 所以我决定尝试稍微清理一下。当我卸载 rvm
(通过 运行 rvm implode
然后 rm -rf ~/.rvm
)然后当我重新启动我的终端时,我现在看到一个错误:
如果我只是按ENTER
,那么错误仍然存在。但是,如果我执行任何其他命令,它就会消失(ls
、echo
、source ~/.zshrc
- 你的名字)。
如果我重新启动 iTerm
(或打开一个新选项卡),- 错误会再次出现。
没有显示错误,- 所以如果我激活另一个主题,那么我看不到是否有错误。
我的直觉告诉我,这与我的道路有关,但我不确定。我的路径比安装 RVM
之前要短。
如果我重命名我的 ~/.zshrc
- 文件,那么 Powerline9k
- 主题将被停用,所以我看不到错误是否仍然出现。但是我试过了……然后一个无主题的 zshell 就启动了。
知道如何修复或调试吗?
编辑
我刚刚意识到它实际上可能是一个遗留错误,从我 运行 bash 的时候开始 - 所以我也添加了那个标签。
卸载所有使用该路径的应用程序并重新安装。这是唯一的方法。代替 rm,您应该使用 should 创建一个带有垃圾桶的别名。
查看他们关于 github 的文档,相关片段是 here。
解决方案:
在您的 ~/.zshrc
中找到名为 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
的变量并删除 rbenv
.
解释:
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
的默认值是 (context dir rbenv vcs)
,rbenv
可能是产生错误的段 - 在您卸载 rvm
之后,该段不能' t执行。
如果按照您所说的执行任何命令后视觉瑕疵立即消失,只需在 .zshrc
的末尾放置一个 echo -n
作为快速简便的修复方法,如果您是无法胜任调试任务,可能会导致您的机器出现更多问题。
这个问题不值得你花时间;)
编辑: 显然上面的方法不起作用。查看评论。
如果您对调试感兴趣,一个好的起点是将 set -xe
(打印正在执行的每一行并在任何退出非零的行上中止)放在开头(在 shebang 行之后,或作为 shebang 中的标志)开始新的交互时执行的每个配置脚本 shell.
还考虑 set -xeuo pipefail
额外捕获和中止使用未设置的 shell 变量和命令 return 非零管道内部(例如 set -e
不会中止 false | true
因为整个行退出时状态为 0
,但 -o pipefail
将在这样的行上中止)。值得注意的是,这些标志是 bash
特征,但由于 zsh
是 bash
的特征超集,它们也适用于 zsh
。
最近我安装了 Zshell 而不是 Bash。在此期间,然后我看到我的 $PATH
有 7 英里长,- 所以我决定尝试稍微清理一下。当我卸载 rvm
(通过 运行 rvm implode
然后 rm -rf ~/.rvm
)然后当我重新启动我的终端时,我现在看到一个错误:
如果我只是按ENTER
,那么错误仍然存在。但是,如果我执行任何其他命令,它就会消失(ls
、echo
、source ~/.zshrc
- 你的名字)。
如果我重新启动 iTerm
(或打开一个新选项卡),- 错误会再次出现。
没有显示错误,- 所以如果我激活另一个主题,那么我看不到是否有错误。
我的直觉告诉我,这与我的道路有关,但我不确定。我的路径比安装 RVM
之前要短。
如果我重命名我的 ~/.zshrc
- 文件,那么 Powerline9k
- 主题将被停用,所以我看不到错误是否仍然出现。但是我试过了……然后一个无主题的 zshell 就启动了。
知道如何修复或调试吗?
编辑
我刚刚意识到它实际上可能是一个遗留错误,从我 运行 bash 的时候开始 - 所以我也添加了那个标签。
卸载所有使用该路径的应用程序并重新安装。这是唯一的方法。代替 rm,您应该使用 should 创建一个带有垃圾桶的别名。
查看他们关于 github 的文档,相关片段是 here。
解决方案:
在您的 ~/.zshrc
中找到名为 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
的变量并删除 rbenv
.
解释:
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
的默认值是 (context dir rbenv vcs)
,rbenv
可能是产生错误的段 - 在您卸载 rvm
之后,该段不能' t执行。
如果按照您所说的执行任何命令后视觉瑕疵立即消失,只需在 .zshrc
的末尾放置一个 echo -n
作为快速简便的修复方法,如果您是无法胜任调试任务,可能会导致您的机器出现更多问题。
这个问题不值得你花时间;)
编辑: 显然上面的方法不起作用。查看评论。
如果您对调试感兴趣,一个好的起点是将 set -xe
(打印正在执行的每一行并在任何退出非零的行上中止)放在开头(在 shebang 行之后,或作为 shebang 中的标志)开始新的交互时执行的每个配置脚本 shell.
还考虑 set -xeuo pipefail
额外捕获和中止使用未设置的 shell 变量和命令 return 非零管道内部(例如 set -e
不会中止 false | true
因为整个行退出时状态为 0
,但 -o pipefail
将在这样的行上中止)。值得注意的是,这些标志是 bash
特征,但由于 zsh
是 bash
的特征超集,它们也适用于 zsh
。