进一步阅读

进一步阅读

我有一个小问题zsh,它有时会使用 100% 的 CPU。在下图中: htop

我该如何解决?我已经杀了它很多次了,但它总是会重新开始。

配置文件很简单,默认为和oh-my-zsh加上一些东西:virtualenvwrapperpyenv

 source /usr/bin/virtualenvwrapper.sh
 export PATH="/home/plugaru/.pyenv/bin:$PATH"
 eval "$(pyenv init -)"
 eval "$(pyenv virtualenv-init -)"

是的,我正在使用Atom:)

答案1

这个错误是 Atom 中一些有问题的设计造成的。此外,它并不是 Z Shell 特有的。人们在使用其他贝壳时也会遇到这种情况。

由于某种原因,Atom 想要了解交互式登录 shell 的环境变量。为此,它会生成您选择的 shell 的一个实例,告诉它env使用 shell 的命令行选项运行命令(在运行所有启动脚本之后)-c,并捕获其输出。它试图确保它不会遇到任何 shell 别名,因此它会运行command env,并尝试获取环境,就像登录shell 也可以为您选择的 shell 提供-l命令行选项。

Atom 开发人员发现人们没有正确设置环境非交互式登录外壳。为了解决这个问题,他们做到了为 shell 提供-i选项,告诉 shell 认为它是一个交互的登录 shell,即使其标准 I/O 没有出现交互的。

不幸的是,它们碰巧以这样的方式调用交互式 shell,即 Z Shell 等 shell 会全力以赴地尝试以交互方式读取输入。但 Atom 不向它们提供任何输入,只提供文件结尾。

输入 Z Shell 和 Bourne Again shell 的ignoreeof选项作为这部喜剧的最后一个元素。这些选项意味着 shell继续尝试读取输入,即使它们在标准输入上得到文件结尾。他们在一个非常紧密的循环中这样做。因此CPU使用率。

进一步阅读

相关内容