【问题标题】:While setting up pyenv, getting eval command not found设置 pyenv 时,找不到 eval 命令
【发布时间】:2020-07-25 21:55:26
【问题描述】:

正如标题所述,我正在设置 pyenv 以在我朋友 Mac 上的帐户上运行 python 3.8.5。我认为问题来自我的 ~/.zshrc 文件中的这个命令

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

到目前为止,我已经检查了 $PATH 命令以确保该命令和导出命令没有任何问题,但无法解决问题。还尝试在 bash shell 中使用上述命令,最后带有 ~/.bash_profile 仍然不起作用。由于所有权问题,我无法运行 brew bash 或 brew zsh。

如果有帮助,我会关注guide 进行设置。

更新:截图

更新2:

【问题讨论】:

  • 看起来您添加到 .zshrc(和 .bash_profile)的命令缺少一些空格,特别是在 eval 和双引号之间,以及在 init 和破折号之间。可能还有其他问题,但这些是我看到的。由于这已被错误地添加到这些文件中,因此您需要对其进行编辑以解决问题(仅再次运行命令不会这样做,它只会在不正确的版本之外添加正确的版本)。
  • @GordonDavisson 我已经修复了间距,但仍然出现错误
  • @JScottAnderson 在修复命令中的拼写错误后,您仍然遇到完全相同的错误 (echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc)?你能检查一下你的~/.zshrc 没有以前运行那个错误命令的那个错误吗?并且一定要重启你的shell(例如exec "$SHELL")!
  • 那些错误信息看起来有点奇怪——“command not found:”和“eval”之间有一个额外的空格。这表明可能存在诸如不间断空格而不是常规空格之类的东西,看起来没问题,但无法正常工作。尝试运行grep eval ~/.zshrc | LC_ALL=C cat -v
  • 我就是这么想的。 “eval”之前的那个“M-BM- ”就是它如何显示一个不间断的空格字符。您需要使用编辑器删除“eval”之前的字符。

标签: python macos terminal zsh pyenv


【解决方案1】:

在 cmets 中经过多次讨论,我们发现了几个间距问题:缺少空格,并且一个空格是不间断空格而不是普通空格:

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

不间断的空间特别棘手,因为它在视觉上与普通空间没有区别。通过LC_ALL=C cat -v 传递文件使其可见为“M-BM- ”。

注意:至少在 macOS 的美式键盘上,键入 Option-space 会输入一个不间断的空格。它们通常会被错误地输入,因为当键入一个应该是正常的空格时,由于某种原因 Option 键被按下。

编辑 .zshrc 文件以添加缺少的空格并删除不间断的空格来修复它。

顺便说一句,我要在这里补充一句:准确输入很重要,当您有文本源时,通常最好复制粘贴而不是尝试准确地重新输入。 p>

【讨论】:

    猜你喜欢
    • 2018-02-27
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2019-09-23
    • 2013-09-12
    • 2014-11-28
    相关资源
    最近更新 更多