当我们用 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. 业界资讯: Air 2.0 beta 版本 发布
  2. java.util.ConcurrentModificationException(并发修改错...
  3. docker 命令详解
  4. 用WORD2010写博客,并发送至博客园
  5. 计算机二级c在哪里学习,2017年计算机二级C语言考点学习
  6. 鸟哥的Linux私房菜(服务器)- 第六章、 Linux 网络侦错
  7. 这样设计是否更好些~仓储接口是否应该设计成基础操作接口和扩展操作接口
  8. arduino判断是否连接串口_Arduino-串口通信
  9. Java笔记第七篇 数据类型初了解(下,后含有循环输出a-z)
  10. 2012年3月份工作总结 ~ 之 ~ PDF 作业对应 (虽然这个作业没有什么意思,但是非常值得总结)
  11. Ubuntu 12.04下NFS安装配置
  12. 用 Windows Media Center 免费看大片 (二)
  13. Centos7网络配置
  14. 16进制颜色码转化rgba
  15. Onvif协议学习:8、设备校时
  16. 恶意软件清理助手1.94使用后的问题
  17. 如何在PowerPoint中添加背景音乐
  18. css 设置背景图片模糊效果
  19. 匿名科创--ANO_OPENMV视觉开发板介绍
  20. excel根据不同的条件模糊匹配,替换,做计算

热门文章

  1. 如何将html转为report,如何把Html5 Report Viewer添加到Web项目
  2. android 写空指针,写下文本内容时bufferedwriter一直显示空指针,求指教
  3. 主节点数量_你知道电气主接线常见接线方式吗?建议收藏共同学习
  4. Hive的行转列及列转行函数使用总结
  5. java数据库实体层封装_Java通过JDBC封装通用DAO层
  6. koa2 mysql sequelize_使用nodejs-koa2-mysql-sequelize-jwt 实现项目api接口
  7. python 关闭udp端口_UDP聊天器
  8. windows nginx 停止和启动_nginx在window与linux中启动、停止、与关闭
  9. python学习中包的生成和调用(idle和pycharm)
  10. TensorFlow精进之路(三):两层卷积神经网络模型将MNIST未识别对的图片筛选出来