背景:在linux下,root用户安装完jdk后,非root用户不能使用java环境变量。

问题排查:

通过在root和非root用户下分别执行echo $PATH 可以观察环境变量的异同。然后将需要的环境变量加入到非root用户中

1 介绍

在 linux 里设置环境变量的方法 ( export PATH )
如果使用源码包安装的软件,在安装完成后一般情况下要设置该软件命令执行的路径,那就是 PATH 变量。如何来设置 PAHT变量呢?我们又三种方法实现
例如:压力测试工具sysbench的命令目录为:/usr/local/sysbench/bin,想要将sysbench工具加入到系统环境变量里,使在root用户下,可以直接执行sysbench命令。

1.1直接使用 export 命令

# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

# export PATH=$PATH:/usr/local/sysbench/bin

# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sysbench/bin

注意: 直接使用 export 设置的变量都是临时变量,也就是说退出当前的 shell ,为该变量定义的值便不会生效了。如何能让我们定义的变量永久生效呢?那就看我们的第二种定义的方式
ps:临时的变量 不推荐

1.2 修改 /etc/profile

# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

# vi /etc/profile
export PATH=$PATH:/usr/local/sysbench/bin  # 在配置文件中加入此行配置
需要注意的是:修改完这个文件必须要使用 以下命令在不用重启系统的情况下使修改的内容生效
# source /etc/profile
或者是:
# . /etc/profile
 
# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sysbench/bin
# 配置已经生效

注意:修改 /etc/profile下虽然可以使环境变量永久生效,但在系统重启时,可能不再读取/etc/profile文件中的内容,需要在执行 "source /etc/profile"之后才能使环境变量生效;

为了避免重启后环境变量不生效的问题,也可以在/etc/profile.d/目录下简历一个path.sh的文件,将export命令写入其中,这样每次系统重启时,都会自动读取文件内容,使环境变量生效。

1.3修改 .bashrc 文件是在当前用户 shell 下生效

# vi /root/.bashrc 在里面加入:
export PATH=$PATH:/usr/local/mysql/bin
修改这个文件之后同样也需要使用 source 或者是 . 使配置文件生效。
再来使用 echo $PATH看下变量是否生效

# echo $PATH

以上是将一个工具命令加入到root用户下的环境变量中,对于非root用户,一般采用第二种方法,在进行 su - 命令切换时,自动读取 ~/bash_profile文件中的环境变量内容,就可以直接使用相关工具的命令了。

最新文章

  1. Android学习——uses-sdk标签详解
  2. javascript学习面向对象(二)
  3. ACM 分数加减法
  4. E: dpkg 被中断,您必须手工运行 sudo dpkg --configure -a 解决此问题。
  5. Atitit.并发编程原理与概论 attilax总结
  6. sql server 2008 基础知识
  7. Apache的HBase与cdh的sqoop集成(不建议不同版本之间的集成)
  8. Activiti从当前任务任意回退至已审批任务
  9. 常用JDBC连接字符串
  10. 后缀自动机(SAM)
  11. MFC逆向-消息响应函数的定位
  12. VantPy自动化测试框架
  13. 5分钟了解MySQL5.7的undo log在线收缩新特性
  14. 浏览器中页面的visibility状态及变化监听
  15. Java:配置环境(Mac)——Eclipse;修改JDK版本后,Eclipse打不开
  16. hive独立配置mysql
  17. go 使用 c接口
  18. 驰骋工作流引擎JFlow与activiti的对比之2种结构化模式
  19. jar安装
  20. Linux 串口、usb转串口驱动分析(2-2) 【转】

热门文章

  1. 封装TableView有可能用到的数据结构和UITableViewCell的一个继承类
  2. ionic3 环境配置 + 運行第一個項目
  3. angularjs下拉框实现渲染html
  4. 动态分配数组(new)和用随机数赋值(rand)
  5. navicat连接oracle 报 ORA-12737 set CHS16GBK
  6. 浅谈OpenStack架构
  7. js实现数据流(日志流,报警信息等)滚动展示,并分页(含实现demo)
  8. MySQL数据库web维护客户端管理工具
  9. (6)javascript的程序控制结构及语句-----(1)条件判断
  10. Apple官方文档译文GitHub框架源码注解