sudo:eval:命令未找到。

11

我在我的系统上安装了minikube,并且minikube start正常工作。当我想要使用本地docker镜像,因此尝试运行sudo eval $(minikube docker-env)

这给了我一个错误:

sudo: eval: command not found

有什么指导或解决方案吗?我正在MacOS Mojave上运行此操作。


1
你为什么要尝试使用sudo运行这个命令? - Pierre B.
因为 minikube 是使用 sudo 安装的。但是现在它可以正常工作了! - PRERNA AGARWAL
6个回答

13

使用sudo eval $(minikube docker-env)命令时,出现sudo: eval: command not found的错误提示,这表示eval命令未找到。因为eval是shell内置命令,在没有使用-s选项的情况下,如果使用sudo命令会出现该错误,如下所示:

shubuntu1@shubuntu1:~/777$ sudo eval
sudo: eval: command not found
shubuntu1@shubuntu1:~/777$ sudo -s eval
shubuntu1@shubuntu1:~/777$
  • 如果您想使用root账户执行:

$ sudo -s -H
$ eval $(minikube docker-env)
  • 如果你只想使用当前账户执行:

  • $ eval $(minikube docker-env)
    

    3
    另一种做法是 eval $(sudo minikube docker-env),意思是执行该命令后使用sudo权限来设置minikube为当前环境的Docker运行时。 - Pierre B.

    2
    在设置Jenkins工作流时遇到了同样的问题。以下解决方案适用于我:
    而不是:
    eval $(minikube docker-env)
    

    尝试使用:

    sudo -s eval $(minikube docker-env)
    

    1

    对我来说麻烦出现在引号中: 而不是 eval $( "${cm}" )

    使用这个

    eval  $"( "${cm}" )" 
    

    我遇到了类似的问题,其中 eval $(/sbin/blkid -o udev /dev/sdb1) 返回了 bash: Data: command not found,因为其中一个 USB 密钥标识符包含空格,如下所示:ID_FS_PARTLABEL=Main Data Partition。您提供的解决方案,像这样使用引号:eval $"(/sbin/blkid -o udev /dev/sdb1)" 在命令行中对我有用,但是在脚本中却不起作用。从脚本中,我需要使用 sed 将包含空格的任何属性值括在单引号中:eval $(/sbin/blkid -o udev /dev/sdb1|sed 's/=/="/'|sed 's/$/"/') 然后 eval $(...) 命令就可以在脚本中工作了。 - FlexMcMurphy

    1

    其他人来这里可能会因为完全不同的原因而得到此错误,与接受的答案不同。在我的情况下,minikube集群未运行。在这种情况下,您会收到的错误也是命令未找到

    只需运行命令:minikube docker-env,如果您收到错误:必须运行控制平面节点才能使用此命令,只需使用minikube start启动它,并重新运行命令eval $(minikube docker-env)。这次应该可以正常工作。


    0

    echo ssh-agent -s > .tmp_ssh_agent

    source .tmp_ssh_agent

    这对我有用,而不是使用eval (可能会对您有所帮助)


    0
    在我的情况下,这是由于非断空格的间距问题。您可以使用以下命令可视化这些内容:
    LC_ALL=C cat -v .zshrc
    

    删除那个非断行空格"M-BM-"解决了我的问题。

    感谢这个stackoverflow的解决方案


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接