我有一个小问题zsh
,它有时会以 100% 的速度使用 CPU。在下图中:
我该如何解决?我杀了它很多次,但它总是重新开始。
配置文件很简单,它是默认的 fromoh-my-zsh
加上一些用于virtualenvwrapper
and 的东西pyenv
:
source /usr/bin/virtualenvwrapper.sh
export PATH="/home/plugaru/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Run Code Online (Sandbox Code Playgroud)
是的,我正在使用Atom
:)
这个错误是 Atom 中一些有问题的设计的结果。此外,它不是 Z Shell 特有的。人们也用其他贝壳来体验它。
出于某种原因,Atom 想知道交互式登录 shell 的环境变量。为此,它会生成您选择的 shell 的一个实例,告诉它env
使用 shell 的-c
命令行选项运行命令(在运行其所有启动脚本之后),并捕获该命令的输出。它试图确保它不会遇到任何 shell 别名,因此它会运行command env
,并尝试通过为您选择的 shell 提供命令行选项来获取登录shell的环境-l
。
Atom 开发人员发现人们没有为非交互式登录 shell正确设置他们的环境。为了解决这个问题,他们还为 shell 提供了一个-i
选项,告诉 shell 认为它是一个交互式登录 shell,即使它的标准 I/O 没有显示为交互式。
不幸的是,它们碰巧以这样一种方式调用交互式 shell,即 Z Shell 之类的 shell 会全力以赴并尝试以交互方式读取输入。但是 Atom 不向它们提供任何输入,只是一个文件结尾。
输入 Z Shell 和 Bourne Again shell 的ignoreeof
选项作为这部喜剧的最后一个元素。这些选项意味着 shell 会继续尝试读取输入,即使它们在标准输入上获得文件结尾。他们在一个非常紧密的循环中这样做。因此CPU使用率。