Sourcing ./zshrc 生成一个 if 语句,每次都会大大减慢 shell 加载时间

Sourcing ./zshrc generates an if statement that considerably slows down shell load time each time

如标题所示,每次我open/source我的./zshrc 都会生成以下代码

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

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

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

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

要查看它的作用,只需 运行

pyenv init -

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

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


更新

@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 文件中删除我上面发布的行,您应该没问题。