通常经过编译安装或二进制拷贝的软件路径会选择自定义路径,以nodejs软件为例,如:/usr/local/node6.10/bin。这个时候在使用sudo命令运行的时候会提示command not found。出现这个问题的缘由是/etc/sudoers配置文件中有这么一个配置:node
79 Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
由此可知,默认路径里面是没有咱们自定义安装软件的路径的,因此node这个命令是找不到的。咱们只须要将node的路径添加到这个一行后面便可。bash
79 Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/node6.10/bin
另外还有几个解决办法:ide
1): 用命令的绝对路径。spa
2): 使用sudo的env选项,像这样sudo env PATH=$PATH cmd.sh。orm
3): 把脚本拷贝或连接到系统$PATH中。cmd
4): 从新编译sudo,不带–with-secure-path选项了.(终极解决办法)。it
以上方法请自行参考是使用哪种,我比较喜欢最开始介绍的那种,比较可控,使用起来也比较方便。编译