【问题标题】:terminal sudo command终端 sudo 命令
【发布时间】:2009-11-03 00:54:17
【问题描述】:

我在这方面完全是新手(Mac leopard 中的终端),并希望从网络上获得一条生命线,因为我确实碰壁了。

我想在终端中以 root 身份运行脚本。该脚本保存为扩展名为 .rtf 的文本文件。我已插入终端:

sudo filename.rtf

然后我被问到一个我输入的密码(管理员密码)并按下回车;然后它显示一个提示:sudo: Mac: command not found

我已经尝试隐藏扩展名,但得到了相同的结果。关于我做错了什么的任何指示?

提前致谢

【问题讨论】:

  • 使用纯文本,而不是 rtf! TextEdit 中有一个选项可以另存为或导出/转换为纯文本,但我有一段时间没有使用 Mac,所以我不记得它是如何完成的。
  • 欢迎来到 Stack Overflow!您的问题可能更适合superuser.com。我已投票将其移至那里;五人投票后,它会自动移动。
  • @Greg,我认为这是在椅子之间。这个问题与编程有关,就像有人会问如何正确使用 gcc、make 等。

标签: terminal


【解决方案1】:

您需要首先将脚本从 .rtf 文件中取出并放入纯文本文件中(在 TextEdit 中打开它并从格式菜单中选择“制作纯文本”,然后将其再次保存为 myscript.sh)。

现在你可以输入

sudo sh myscript.sh

那里的“神奇” sh 字母是因为正如另一位响应者所说,sudo 会暂时将您提升为超级用户并运行程序。在 *nix 环境中,这将是任何设置了可执行位的东西,这意味着有人明确告诉操作系统运行文件是安全的。在您的情况下,您的 myscript.sh 并没有以这种方式被“祝福”,因此要运行它,您需要将它输入到一个知道如何理解它的程序中。该程序是 sh,它确实设置了可执行位。把它想象成 sudo (sh myscript.sh) 可能会更清楚一点。

如果您计划大量运行此脚本,您可能希望真正让它自己可执行。这相当于在文件中放入特殊指令,告诉操作系统应该如何运行文件。如果您在脚本的第一行粘贴#!/bin/sh(这称为shebang 行并告诉操作系统如何处理您的文件),然后键入chmod u+x myscript.sh(这告诉操作系统您,并且只有您,被允许执行您的文件),您将能够直接使用sudo myscript.sh 运行该文件。

【讨论】:

  • 也许能解释一下魔法字母“sh”的作用,提问者似乎很新,可能不明白为什么需要它们。
  • 感谢您的建议 :) 我对其进行了编辑,以便在这一点上更加清晰。
【解决方案2】:

sudo用于以机器的root用户身份执行命令。

当你输入时

sudo [somthing]

shell 授予临时 root 权限,然后执行给定的“somthing”

假设你的脚本在 bash 中,你应该已经完成​​了

sudo sh filename.rtf

另外,最好将脚本保存为纯 txt,并带有 sh 扩展名,这样您就可以执行

sudo sh myscript.sh

【讨论】:

    【解决方案3】:

    首先将脚本设置为可执行:

    chmod +x filename.rtf
    

    然后就可以这样运行了:

    sudo ./filename.rtf
    

    【讨论】:

    • -1 因为 rtf 包含随机格式化字符...99% 的机会像这样执行它是行不通的。查看南瓜的答案
    • @davr,我假设他只是添加了文件扩展名 .rtf 并且它不是富文本格式的文件。感谢您的反对票,我很感激。
    • +1 因为虽然它在这种特殊情况下不起作用,但这确实回答了 OP 的问题,并且将来对他有用。只是不适合这个特殊的文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2020-09-16
    • 2012-03-30
    • 2010-09-30
    • 1970-01-01
    • 2010-10-12
    相关资源
    最近更新 更多