Linux有问必答:如何为sudo命令定义PATH环境变量

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"下,在开篇所遇见的问题就将迎刃而解。


  1. Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

这个修改会即刻生效。

原文发布时间:2014-09-02

本文来自云栖合作伙伴“linux中国”

时间: 2024-08-03 10:57:23

Linux有问必答:如何为sudo命令定义PATH环境变量的相关文章

Linux有问必答:如何在命令行创建一个MySQL数据库

Linux有问必答:如何在命令行创建一个MySQL数据库 问题:在一个某处运行的MySQL服务器上,我该怎样通过命令行创建和安装一个MySQL数据库呢? 为了能通过命令行创建一个MySQL数据库,你可以使用mysql命令行客户端.下面是通过mysql命令行客户端创建和安装MySQL的步骤. 第一步:安装MySQL客户端 当然你得确保MySQL客户端已经安装完毕.如果没有的话,可以按照下面的方法. 在Debian,Ubuntu 或者 Linux Mint上: $ sudo apt-get inst

Linux有问必答:如何通过命令行创建和设置一个MySQL用户

Linux有问必答:如何通过命令行创建和设置一个MySQL用户 问题:我想要在MySQL服务器上创建一个新的用户帐号,并且赋予他适当的权限和资源限制.如何通过命令行的方式来创建并且设置一个MySQL用户呢? 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行.每个MySQL用户帐号都有许多与之相关连的属性,例如用户名.密码以及权限和资源限制."权限"定义了特定用户能够在MySQL服务器中做什么,而"资源限制"为用户设置了一系列服务器资源的使用许可.创

Linux有问必答:如何在命令行下压缩JPEG图像

Linux有问必答:如何在命令行下压缩JPEG图像 问题: 我有许多数码照相机拍出来的照片.我想在上传到Dropbox之前,优化和压缩下JPEG图片.有没有什么简单的方法压缩JPEG图片并不损耗他们的质量? 如今拍照设备(如智能手机.数码相机)拍出来的图片分辨率越来越大.甚至3630万像素的Nikon D800已经冲入市场,并且这个趋势根本停不下来.如今的拍照设备不断地提高着照片分辨率,使得我们不得不压缩后,再上传到有储存限制.带宽限制的云. 事实上,这里有一个非常简单的方法压缩JPEG图像.一

linux下查看和添加PATH环境变量

  $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PATH 声明,其格式为: PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N> 你可以自己加上指定的路径,中间用冒号隔开.环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:$ source .bash_profile 需要

Linux中PATH环境变量的查看和添加方法

$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑 PATH 声明,其格式为: PATH=$PATH:<PATH1>:<PATH2>:<PATH3>:--:<PATHN> 你可以自己加上指定的路径,中间用冒号隔开.环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句: $source .bash_profile 可用 export命令查看P

linux CentOS 系统下如何将php和mysql命令加入到环境变量中_Linux

linux CentOS 系统下如何将php和mysql命令加入到环境变量中 在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行"php -v"命令查看当前php版本信息时时,则会提示命令不存在的错误,下面我们详细介绍一下在linux下将php和mysql加入到环境变量中的方法(假设php.mysql和apache分别安装在/phpstudy/server/php/./phpstudy

linux CentOS 系统php和mysql命令加入到环境变量中_Linux

在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行"php -v"命令查看当前php版本信息时时,则会提示命令不存在的错误,下面我们详细介绍一下在linux下将php和mysql加入到环境变量中的方法(假设php.mysql和apache分别安装在/phpstudy/server/php/./phpstudy/server/mysql/和/phpstudy/server/php/中).

jdk安装后为什么要配置Path环境变量

  我们知道运行java程序需要进行两个步骤   第一步 编译,将源文件编译成字节码,对应的是javac命令 第二步 解释,解释执行平台无关的字节码程序,对应的是java命令   发现问题 安装完jdk在cmd执行这两个命令的时候 会提示"不是内部或外部命令,也不是可运行程序或批处理文件"     问题原因 虽然计算机安装jdk并且jdk的安装路径下面包含了这两个命令 但是计算机不知道到哪里找这两个命令. Windows操作系统根据path环境变量来查找命令 Path环境的值是一系列路

PATH环境变量也有缓存

hash - hash database access method hase 命令:用来显示和清除哈希表,执行命令的时候,系统将先查询哈希表. 当你输入命令,首先在hash表中寻找,如果不存在,才会利用$PATH环境变量指定的路径寻找命令,然后加以执行.同时也会将其放入到hash table 中,当下一次执行同样的命令时就不会再通过$PATH寻找.以此提高命令的执行效率. 显示哈希表中命令使用频率 $ hash hits command 6 /usr/bin/svn 1 /bin/chown