./zshrc的源代码会生成一条if语句,每次都会显着减慢Shell加载时间

问题描述

正如标题所示,每次我打开/提供./zshrc时,都会生成以下代码

if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

最终,我将该代码复制并粘贴了100次(在我的./zshrc内部),并且大大减慢了我的shell加载时间。

这是什么代码,如何阻止它再次出现?

解决方法

eval "$(pyenv init -)"初始化pyenv,因此您可以在shell中使用它。 pyenv是用于安装和管理多个版本的Python的工具。

要查看其功能,只需运行

pyenv init -

在您的外壳中。之后,将命令的输出复制粘贴到~/.zshrc文件中,并删除上面列出的代码。在此之后,您的shell将启动得更快。如果pyenv停止为您工作,只需再次运行pyenv init -并用其输出更新~/.zshrc文件。

哦,顺便说一句:Doing source ~/.zshrc is generally a bad idea.相反,如果您已经修改了.zshrc文件并且想要查看结果,只需重新启动终端或执行exec zsh。 / p>


更新

@akBo我刚刚再次阅读了您的问题,并且意识到您实际上是在说您发布的代码块一次又一次地添加到您的~/.zshrc文件中。

您可能已将以下内容添加到您的.zshrc文件中了吗?

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshrc

这来自pyenv installation instructions,但不是,您应该将其添加到.zshrc文件中。而是要在命令行一次上运行该命令,以便将您发布的代码块添加到.zshrc文件中。但是,因为您已经将该行添加到了.zshrc中,所以每次您获取.zshrc时都会执行该行,从而一次又一次地添加相同的代码块。

只需从您的~/.zshrc文件中删除我上面发布的那行,就可以了。