问题的原因: 在编译sudo包的时候默认开启了- -with-secure-path选项。

  1. 方法1: 在/etc/sudoers文件内增加这么一行:Defaults secure_path=”/bin:/usr/bin:/usr/local/bin:…”, 把要用的命令path包括进去。
  2. 方法2: 用命令的绝对路径。
  3. 方法3: 使用sudo的env选项,像这样sudo env PATH=$PATH cmd.sh。
  4. 方法4: 把脚本拷贝或链接到系统$PATH中。
  5. 方法5: 重新编译sudo,不带–with-secure-path选项了.(终极解决办法)。
    在非root下,可以执行很多命令。在root命令下,却提示 command not found。例如 使用adb
    现象: 当我们用sudo来执行cd、ls等命令时,会出现command not found的提示 在执行Linux命令时,如果在其前面加上sudo,就表示以root权限执行。但是这其实是有一个前提的,就是只有那些Linux内置系统命令才可以用如此的形式来执行,而对于Shell内置命令或其他用户自定义命令、别名等,是不能用sudo来使用root权限的。为什么呢?详细说一下sudo幕后隐藏的过程才能明白。
    因为当在Linux下用sudo执行某一命令时,是在原进程(parent process)的基础上fork出来一个子进程(child process),这个子进程是以root权限执行的。然后在子进程中,执行你在sudo后面跟的命令。
    在子进程中是无法调用涉及到父进程的状态的一些命令的,所以非系统内置命令会被拒绝。这就是为什么会出现command not found的提示。

解决:先用绝对路径执行吧

原因英文版

Path used for every command run from sudo(8). If you don’t trust the people running sudo to have a sane PATH environment variable you may want to use this. Another use is if you want to have the “root path” be separate from the “user path.” You will need to customize the path for your site. NOTE: this is not applied to users in the group specified by –with-exemptgroup. If you do not specify a path, “/bin:/usr/ucb:/usr/bin:/usr/sbin:/sbin:/usr/etc:/etc” is used.

作者:北夜人
链接:https://www.jianshu.com/p/049f13e55840
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

执行sudo命令时command not found的解决办法相关推荐

  1. 在 ubuntu 20.04 LTS 上安装 ROS2 执行 rosdep update 命令时出现的问题的解决办法

    在 ubuntu 20.04 LTS 上安装 ROS2 执行 rosdep update 命令时出现的问题的解决办法 1.sudo rosdep init 在执行 sudo rosdep init 命 ...

  2. mysql update语句卡死_oracle执行update语句时卡住问题分析及解决办法

    问题 开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果.但是奇怪的是执行其他的select语句却是 ...

  3. 使用yum命令时出现Existing lock的解决办法

    当使用yum命令时出现Existing lock /var/run/yum.pid: another copy is running as pid 5803. 主要原因一般是后台有yum进程在运行,所 ...

  4. cmd使用删除命令时遇到拒绝访问的解决办法

    此办法适用于右键删除时提示需要SYSTEM权限而无法删除的情况 原因:删除不了是因为文件夹所有者没有完全控制的权限. 步骤: 找到需要删除的文件夹 右键属性 找到"安全" 找到&q ...

  5. eclipse运行 Maven Test命令时控制台输出乱码的解决办法

    2019独角兽企业重金招聘Python工程师标准>>> 在Maven的pom.xml文件中增加: <properties><argLine>-Dfile.en ...

  6. 执行cp命令时提示cp: 略过目录

    [root@gu tools]# cp phpMyAdmin-3.4.2-all-languages /data/bbs/ cp: 略过目录 "phpMyAdmin-3.4.2-all-la ...

  7. 如何指定在Git上执行shell命令时使用的私有SSH密钥?

    也许是一个相当不寻常的情况,但我想指定一个私有SSH密钥,以便在从本地计算机执行shell(git)命令时使用. 基本上是这样的: git clone git@github.com:TheUser/T ...

  8. 解决Ubuntu执行sudo命令后提示无法解析主机

    解决Ubuntu执行sudo命令后提示无法解析主机 异常现象 异常原因 查看修改主机名 普通用户与管理员间的切换 异常现象 异常原因 /etc/hostname和/etc/hosts文件中主机名称不一 ...

  9. 执行git命令时提示秘钥权限太开放‘Permissions 0644 for ‘/Users/liuml/.ssh/id_rsa_tz‘ are too open.’

    执行git命令时提示秘钥权限太开放'Permissions 0644 for '/Users/liuml/.ssh/id_rsa_tz' are too open.' 报错如下 这个问题是由于 权限的 ...

最新文章

  1. 2019手机浏览器排名_浏览器排行榜2019年1月浏览器市场份额排名
  2. 防火墙(6)—— -d的用法
  3. github操作命令
  4. java对象模型是什么_蓝石榴_个人博客_JVM内存结构、Java内存模型、Java对象模型...
  5. 基于深度学习的FAQ问答系统
  6. 【WPF】wpf image控件加载网络图片不显示问题,
  7. mfc大观之二(类识别)
  8. MATLAB中的光照处理
  9. EzCad 二次开发 金橙子激光雕刻机c# 能显示预览图
  10. winhttp 访问https_「winhttp」C++用winhttp实现https访问服务器 - seo实验室
  11. 对期货大赛获奖者杨宏斌、陈伟的采访
  12. sw与matlab连接_solidworks与matlab联合仿真simMechnics下载及安装
  13. 分析can波形及数据
  14. 微信小游戏appid申请过程
  15. CAN硬件过滤器的使用(32位宽掩码模式扩展帧)
  16. 有向图和无向图用邻接矩阵储存
  17. 如何在众多快递物流中筛选出代收的单号
  18. Vue3发布半年我不学,摸鱼爽歪歪,哎~就是玩儿
  19. 充电桩APP开发方案
  20. 机器学习 TOP 10 必读论文

热门文章

  1. @OneToOne使用报错
  2. 圆心科技旗下药房再被处罚:两次递表港交所,腾讯、红杉等为股东
  3. 简单爬虫 爬知乎日报
  4. 东呈国际集团决定对湖北省加盟酒店进行重大费用减免
  5. 【完成】自制5V光耦继电器,原理图、PCB、视频及源文件
  6. 注解和反射12.动态创建对象执行方法
  7. viewpage显示服务器图片,照片查看器——ViewPager实现的图片展示控件
  8. 《自用》endnote 使用
  9. 31-广域网——帧中继技术
  10. php clearinterval,为什么把 clearInterval 放在外面清除不了 setInterval