这让我很困惑。
sudo [any command here ]
bash: sudo: command not found
呃!
我尝试卸载 Ruby 版本管理器(出于某种原因它无法编译 Ruby)。在按照他们的分步说明进行操作时,我发现 sudo 不可用。
这是我的$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
which sudo
不返回任何内容。
我想在等待的时候尝试一下。我有一台较旧的 Mac,两天前刚刚升级到 Lion。我将其复制到了/usr/bin/sudo
有问题的机器上。现在,当我尝试时sudo
,我得到了:
sudo:必须是 setuid root
我对命令行不是特别熟悉——这看起来很糟糕。
答案1
尝试使用磁盘实用程序修复文件权限——运气好的话,应该会重置您复制的 /usr/bin/sudo 上的 setuid 位。这是一个标志,即使 sudo 不是以 root 身份运行,它也可以充当 root 身份,这显然需要它能够做到,但您需要 sudo 使用命令行来设置它,因此您遇到了先有鸡还是先有蛋的问题。
答案2
有sudo
没有完全消失过?你用从另一台机器上获取的文件替换了它吗?我想知道你是怎么删除的sudo
。RVM 运行时没有提升权限,它不应该有执行此类操作的权限。
无论如何,请尝试从最新备份中恢复。如果没有,请通过以下方式修复权限磁盘工具。 可能有帮助。
Command-S
您可以尝试将 Mac 启动到单用户模式。启动时按住 即可。在这里,输入
mount -uw /
然后尝试正确地对文件进行 chmod 操作。如下所示:
chown root /usr/bin/sudo
chmod u+s /usr/bin/sudo
如果一切都失败了,只需重新安装 Lion 即可——这就是恢复的目的。它不会删除您的文件。您必须清除磁盘才能丢失任何内容,但我强烈建议进行备份。
答案3
我看到 Mike Scott 的帖子回答了您的 sudo 问题,但我也遇到了 RVM 无法编译 Rubies 的问题。似乎 Apple 在 10.7 中已改为使用 LLVM 作为默认编译器,因此将 gcc 链接到了 llvm-gcc。
$ which gcc
/usr/bin/gcc
$ ls -la /usr/bin/gcc
lrwxr-xr-x 1 root wheel 12 30 Nov 13:40 /usr/bin/gcc -> llvm-gcc-4.2
gcc 仍在那里,但它位于 /usr/bin/gcc-4.2。通过设置 CC 环境变量指定要使用的 C 编译器应该允许您编译 rubies。
$ CC=/usr/bin/gcc-4.2 rvm install 1.9.2