Linux sudo一些命令出现 command not found 的原因

发布时间:2020-07-31 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了Linux sudo一些命令出现 command not found 的原因脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

当我们用 sudo 来执行 cd、source、type 等命令时,会出现 command not found 的错误提示:

$ sudo cd ~
sudo: cd: command not found
  • 1
  • 2

我们知道在执行 Linux 命令时,如果在其前面加上sudo,就表示以root权限执行。但是这其实是有一个前提的,就是只有那些 Linux 内置系统命令才可以用如此的形式来执行,而对于 Shell 内置命令或其他用户自定义命令、别名等,是不能用sudo来使用root权限的。为什么呢?详细说一下sudo幕后隐藏的过程才能明白。

这里首先插一句:

一个命令是 Linux 内置系统命令还是 shell 内置命令的判断依据,可通过 type 命令进行判断:

$ type cd
cd is a shell builtin
$ man cd
No manual entry for cd
$ sudo cd ~
sudo: cd: command not found

$ type cp
cp is /bin/cp
$ sudo cp
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

因为当在Linux下用sudo执行某一命令时,是在原进程(parent process)的基础上 fork 出来一个子进程(child process),这个子进程是以 root 权限执行的。然后在子进程中,执行你在sudo后面跟的命令。

在子进程中是无法调用涉及到父进程的状态的一些命令的,所以非系统内置命令会被拒绝。这就是为什么会出现command not found的提示。具体来说,当我们执行:

$ sudo cd ~
  • 1

所在这个shell进程中(称其为PP,表示parent process)fork出一个子进程(称其为CP,表示child process),那么在CP中是无法改变PP的所在目录的。

  1. Linux下执行一些命令前加sudo时出现command not found的原因

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

总结

以上是脚本之家为你收集整理的Linux sudo一些命令出现 command not found 的原因全部内容,希望文章能够帮你解决Linux sudo一些命令出现 command not found 的原因所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入脚本之家官方QQ群:1065694478
脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!