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

$ sudo cd ~
sudo: cd: command not found

我们知道在执行 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 

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

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

$ sudo cd ~

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

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

Linux sudo一些命令出现 command not found 的原因相关推荐

  1. Linux后台运行命令 nohup command myout.file 21

    Linux命令后台运行 转自北国的雨,谢谢:http://www.cnblogs.com/lwm-1988/archive/2011/08/20/2147299.html 有两种方式: 1. comm ...

  2. linux sudo bash,命令'su','sudo bash'和'sudo sh'之间的区别?

    su -sudo bashsudo sh 背景 在Linux (和Unix一般)中,有一个名为SuperUser的root,SuperUser可以做所有事情,因此用SuperUser进行日常工作很危险 ...

  3. linux sudo yum命令详解,Linux apt-get

    什么是apt-get apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索.安装.升级.卸载软件或操作系统. apt-get命令一般需要root权限 ...

  4. linux sudo yum命令详解,每天一个Linux命令之sudo命令详解

    Linux系统的sudo命令是切换用户身份的命令.下面由学习啦小编为大家整理了每天一个Linux命令之sudo命令详解,希望对大家有帮助! 每天一个Linux命令之sudo命令详解 sudo命令用来以 ...

  5. FL2440移植linux内核常用命令(command)

    Host Ubuntu系统: sudo ifconfig eth0 192.168.1.2 打补丁(补丁和内核在同一目录下/home/chris/temp): cd /home/chris/temp/ ...

  6. 使用sudo执行命令提示command not found

    一.问题描述 使用源码部署Nginx时,使用sudo Nginx提示command not found,但是直接使用Nginx会导致权限问题. 这种情况应该是环境变量导致的.切换到普通用户,使用 en ...

  7. linux sudo授权命令

    1.帮助命令 man+命令名称 这个是提供帮助的命令 2.文本统计 wc bb.text 2 2 6 bb.text 行数 单词 字符 文件名 -l -w -c 3.du -h 文件大小统计 -h可显 ...

  8. linux 下sh命令:command not found

    1.使用cat -A 文件名 查看文件中是否存在特殊字符: 2.本次出现的问题主要在于每行结尾处存在^M特殊字符,比如:#!/bin/sh^M$,解决方法是: 使用vi打开文本文件  vi test. ...

  9. Linux: 运行sh命令时command not found

    问题: 解决: 1.查看PATH变量(echo $PATH) 2.把查询出来的PATH放到sh文件中并导入

最新文章

  1. R语言包_dplyr_1
  2. 转 从头到尾彻底解析Hash表算法
  3. Understand分析Kinect SDK 1.7自带例子(C++)图集二
  4. 18. OD-反调试研究,破解反调试,编写反调试
  5. 学习了Redis的五大数据类型,其底层实现你了解吗?
  6. servlet 返回可访问文件_Windows 10 可直接访问 Linux 文件
  7. 求矩阵不靠边元素之和_机器(深度)学习数学知识之范数
  8. 解决ubuntu的firefox上网速度慢[转]
  9. std::string std::wstring 删除最后元素 得到最后元素
  10. 泛函分析 04.01 有界线性算子 - 有界线性算子与有界线性泛函
  11. MySQL 去重SQL
  12. 【mmdetection】对VOC格式的数据集进行测试
  13. 进制转换【最全进制转换汇总】(整数_小数_正数_负数)正负数整数小数十进制转任意进制-正负数整数小数任意进制转十进制-正负数低进制转高进制-正负数高进制转低进制
  14. 微信小程序:点marker,线polyline,面polygons的渲染
  15. 基于深度学习的时间序列分类[含代码]
  16. 划水总结剑指offer 链表系列1
  17. cajviewer打不开,卸载重装也于事无补。一分钟解决,亲测有效。
  18. kso经验记录 --spring.net的应用以及配置
  19. 数据结构(三)打印二叉树中结点层次遍历序列的实现
  20. 月入过万——网店推广实战方法(第2版)

热门文章

  1. Python 之面向对象 继承
  2. linux端口扫描脚本ip段,shell脚本结合iptables防端口扫描的实现
  3. linux文件共享加锁,Linux共享数据管理——文件锁定
  4. 第八届蓝桥杯第一题购物单
  5. 剑指offer面试题64. 求1+2+…+n(逻辑符短路)(递归)
  6. Linux基础——怎么样从 Windows 通过 SSH 远程 Linux
  7. [c++primer][12]类
  8. FPGA_EP2C8T144_SCH(PDF)
  9. HDU2021 发工资咯:)【整数计算】
  10. HDU2107 Founding of HDU【序列处理+最大值】