首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >'sudo [命令]和'sudo sh [命令]有什么区别?

'sudo [命令]和'sudo sh [命令]有什么区别?
EN

Ask Ubuntu用户
提问于 2013-04-11 08:35:17
回答 3查看 60K关注 0票数 15

我试图在我的Ubuntu12.04.2LTS中安装VMware工作站。如果我执行以下命令:

代码语言:javascript
运行
复制
sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle

它立即完成,安装从未启动。

如果我执行以下命令:

代码语言:javascript
运行
复制
sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle

安装程序可以成功启动。

为什么这会有什么区别?

EN

回答 3

Ask Ubuntu用户

回答已采纳

发布于 2013-04-11 10:24:46

如果该文件未标记为可执行文件,则需要调用命令shell解释器来执行该文件。

示例:

  • sudo sh foo将使用sudo特权使用sh打开foo。
  • sudo bash foo将使用sudo特权使用bash打开foo。
  • sh foo将使用您的用户权限使用sh打开foo。
  • bash foo将使用您的用户权限使用bash打开foo。

如果将一个文件标记为可执行文件,只需使用./foo调用它,并且由于它被标记为可执行文件,它将使用已定义的命令shell解释器读取并执行,而不需要定义一个。

ls -F将列出文件并用*标记可执行文件。

要在文件上启用执行位(并使其可执行),请使用命令chmod +x foo

在您的例子中,为了使您使用的文件可执行,您将使用命令

chmod +x VMware-Workstation-9.0.1-894247.x86_64.bundle

然后,您将能够运行它的任何一个

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle或只需键入sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle

票数 17
EN

Ask Ubuntu用户

发布于 2013-04-11 08:44:55

Sh是一个用于运行命令的shell,因此使用sudo执行sh将为您提供一个根shell。这意味着shell中的所有命令都作为root执行。我的猜测是,脚本执行其他需要根的东西,但是,当您只使用sudo不sudo sh时,其他的东西会以普通用户的身份执行,但是对于sh,所有的东西都会以root的形式执行。

票数 14
EN

Ask Ubuntu用户

发布于 2021-05-17 12:56:44

sudo是一个授予根权限的命令。但是sh是一个解释器。当您使用sudo command时,您将该命令作为根权限运行。但是,当您使用sudo sh command时,您将sh命令作为根用户运行。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/280208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档