|
如何解决 sudo 命令找不到环境变量的问题 在通过 sudo 运行命令时,系统会默认重置环境变量为安全的环境变量,也就是说,先前设置的变量都会失效,只有少数配置文件中指定的环境变量能够保存下来。 sudo 的配置文件是 /etc/sudoers,需要 root 权限才能读取,运行以下命令:
sudo 的配置如下图所示:
sudo 配置文件 请注意:
综上所述,sudo 命令找不到环境变量或命令的问题,有三种解决方法:
加上 -E 选项后,用户可以在 sudo 执行时保留当前用户已存在的环境变量,不会被 sudo 重置。另外,如果用户对于指定的环境变量没有权限,则会报错。
在内部测试机器中,安全性要求不高,总是需要加上 -E 参数来执行脚本,这个安全设定也不是很方便。因此,可以通过修改 /etc/sudoers 文件的env_keep 和 secure_path 配置项,来指定 sudo 环境中需要保留的环境变量和路径。 当然你也可以用更简单粗暴的方式:直接将 Defaults env_reset 改成Defaults !env_reset 来取消掉对 PATH 变量的重置,然后在 .bashrc 中最后添加 alias sudo='sudo env PATH=$PATH'。这样 sudo 执行命令时所搜寻的路径就是系统的 PATH 变量中的路径,如果你想添加其他变量方法也是类似。
手动在脚本中设置所需的变量,在执行 sudo 脚本前先将所需要的变量写入到需要执行的脚本开头。 参考文档
|
微信公众号
手机版