如何为sudo命令定义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

在使用sudo执行命令确保环境变量的传递
首先,我们可以随时使用sudo -u targetUser env来检查目标用户targetUser的环境变量,特别是你定义的一些HOME目录和PATH变量

以下是两个重要的配置步骤:

确保环境变量得以传递,以Hadoop相关的一些环境变量为例,我们需要在/etc/sudoers中添加需要传递的环境变量,比如:

Defaults env_keep += “JAVA_HOME HADOOP_HOME HBASE_HOME HIVE_HOME MAHOUT_HOME PATH”
如果不做上述配置,可以使用sudo -i -u targetUser your-command来执行你的命令,使用-i参数会模拟一次登录,目标用户的相关环境变量就可以相应的被初始化了!

在Linux系统中,要将新生成的bin目录路径添环境变量`PATH`中,可以通过编辑用户的`.bashrc`文件或者全局的`/etc/profile`文件(具体取决于你希望该设置对所有用户有效还是仅对当前用户有效)来进行配置。以下是具体步骤: 1. 首先,打开终端。 2. 使用文本编辑器打开`.bashrc`文件,如果需要对所有用户生效,则编辑`/etc/profile`文件。可以使用`nano`、`vi`、`vim`等编辑器。例如,使用`nano`编辑器打开当前用户的`.bashrc`文件: ```bash nano ~/.bashrc ``` 如果要修改全局设置,使用: ```bash sudo nano /etc/profile ``` 3. 在打开的文件中,找到`PATH`变量的定义。如果该变量不存在,你可以新建一行添路径;如果已经存在,可以直接在其后添你的bin目录路径,中间用冒号(:)分隔。例如: ```bash export PATH=$PATH:/path/to/your/new/bin ``` 替换`/path/to/your/new/bin`为你实际的目录路径。 4. 保存并关闭文件。如果你使用的是`nano`,可以按`Ctrl + O`保存文件,然后按`Ctrl + X`退出编辑器。 5. 为了使改动生效,可以执行以下命令使`.bashrc`中的修改立即生效: ```bash source ~/.bashrc ``` 如果你修改的是`/etc/profile`文件,为了使所有用户的环境变量生效,需要重启计算机或者使用`source /etc/profile`命令,但通常需要管理员权限。 6. 验证新的环境变量是否已经生效,可以使用`echo $PATH`命令查看当前的`PATH`环境变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值