pyenv 在每个“源”处附加带有垃圾邮件的 .zshrc 文件

pyenv appends .zshrc file with spam at every `source`

我正在尝试将 python 3.7.3 设置为我的默认 python。 我正在按照本指南 https://opensource.com/article/19/5/python-3-default-mac 阅读页面底部的 What we should do 章节。

除了在我的 .zshrc 文件中附加以下内容外,它工作正常:

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

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

每次我打开终端或 运行 source ~/.zshrc 它都会在我的配置底部放置另一个以下内容:

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

如果删除 if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi,我会得到 python v2,将 >> ~/.zshrc 更改为 >> ~/.zshrc_temp 或完全删除它 有任何想法吗?

如果重要的话,我正在使用 MacOS Mojave 10.14 和 iTerm2。

我想我解决了这个问题!我完成删除

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

和每个

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

除了一个。

在此之后 Pyenv 似乎仍然按预期工作,并且没有新行被附加到我的 .zshrc

这不是pyenv的问题,你只是不明白.zshrc是什么

.zshrc 是 ZSH 的 init/config 文件。每当您打开一个新的交互式 ZSH shell 时,ZSH 运行 中的内容。

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

以上内容将pyenv初始化脚本一遍又一遍地附加到.zshrc中。

我不知道你在哪里复制了echo -e ...命令。应该是运行在shell,而不是.zshrc.