将sudo与其他命令一起使用

时间:2017-02-08 13:36:01

标签: linux bash linuxmint

假设我运行命令

exit

显然终端退出,因为这是命令的目的。

我理解sudo意味着以管理员权限运行命令。如果我跑:

sudo exit

然后我得到" sudo:exit:命令未找到"从终端。为什么终端在这种情况下不会识别命令并继续退出终端,就像没有sudo时一样?

1 个答案:

答案 0 :(得分:0)

大多数"命令"在类似unix的环境中实际上是外部程序和脚本。像exit这样的一些内容是内置在shell中的实际命令。 sudo无法识别后者。

从手册页:

  

当sudo运行命令时,它调用fork(2),设置执行   如上所述的环境,并调用execve系统调用   孩子的过程。

来自execve手册页:

  

execve()执行filename指向的程序。

没有名为exit的程序;它只是一个shell识别的命令。

以这种方式思考:Unix授予进程权限。 sudo运行具有提升/修改权限的进程。但是,当您运行exit时,您不会产生新流程。 sudo无法提升已经运行的shell的权限;那会怎样呢?

你可以做的是告诉sudo生成另一个shell,传递exit作为运行该shell的命令......当然不会做任何事情。