TranslateProject/published/201409/20140716 Linux FAQs with Answers--How to define PATH environment variable for sudo commands.md
2014-11-01 21:02:39 +08:00

24 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Linux有问必答——如何为sudo命令定义PATH环境变量
================================================================================
>**问题**:我安装了一个程序到/usr/local/bin目录下这个程序需要root权限才能执行当我用sudo去执行它时收到"sudo: XXXXX: command not found"的错误提示,不知道为什么/usr/local/bin没有被包含到PATH环境变量下面来我该如何解决这个问题
当你使用sudo去执行一个程序时处于安全的考虑这个程序将在一个新的、最小化的环境中执行也就是说诸如PATH这样的环境变量在sudo命令下已经被重置成默认状态了。所以当一个刚初始化的PATH变量中不包含你所要运行的程序所在的目录用sudo去执行你就会得到"command not found"的错误提示。
要想改变PATH在sudo会话中的初始值用文本编辑器打开/etc/sudoers文件找到"secure_path"一行当你执行sudo 命令时,"secure_path"中包含的路径将被当做默认PATH变量使用。
添加所需要的路径(如 /usr/local/bin到"secure_path"下,在开篇所遇见的问题就将迎刃而解。
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
这个修改会即刻生效。
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/define-path-environment-variable-sudo-commands.html
译者:[nd0104](https://github.com/nd0104) 校对:[Caroline](https://github.com/carolinewuyan)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出