Linux配置全局与当前用户环境变量
今天这篇文章,讲解linux系统的全局环境变量以及当前用户环境变量的配置。
以前在没有遇到实际问题时,基本忽略掉思考,所有配置的环境变量都配成全局生效。这样是有弊端的,在某一次偶然的机会,我沉思的一小会,意识到全局环境变量与当前用户环境变量还是区分为好,不应一概而论。
直到后来我在linux服务器从Oracle11g过度到Oracle19c时。需要创建普通用户例如oracle才能安装,这时我才恍然大悟。这大概是linux操作系统的魅力所在。
当时遇到的国产银河麒麟操作系统,把不同用户权限区分的明明白白的,三权分立。管理员用户root、安全用户secure、普通用户user,三者之间均无法访问别人的home目录,这时我才明白原来那个root用户是假的。泾渭分明,这样做当然有优势。好处在于运维人员只需要分心维护管路员用户和安全用户。普通用户权限比较小,相对来说不会造成较为严重的后果。
正文
配置环境变量,并不一定需要非得配置成所有用全局的或者当前用户全局的。如果使用的中间件有配置文件,你甚至可以在当前的中间件配置文件中指定JDK安装的路径,我做测试时一般会这样配置,为了不干扰原有的环境配置而做出让步。这样会显得繁琐一些,配置全局则更为方便管理。
一、配置全局环境变量
1、Redhat系列配置环境变量
注意:需要root用户权限,才能编辑/etc/profile
文件,默认配置如下图所示
1.1、永久生效
1.1.1、配置全局环境变量,针对所有用户
首先需要切换到root用户模式,然后编辑全局系统环境变量配置文件,所有用户都生效,永久生效。
1 | #切换到root用户下 |
例如加入配置文件,对应你安装JDK所在路径
1 | #例如加入JDK环境变量 |
1.2.1、source命令
执行source命令读取并执行shell脚本配置文件,无需重启服务器。
1 | #执行source命令使其生效 |
1.2、临时生效
临时设置这种方式一般很少采取,大多数情况下都是直接编辑环境变量配置文件进行设置。
1 | #例如配置ORACLE_HOME |
2、Ubuntu配置环境变量
2.1、永久生效
2.1.1、全局环境变量,针对所有用户
首先需要切换到root用户模式,然后编辑全局系统环境变量配置文件,所有用户都生效,永久生效。
1 | #切换到root用户下 |
2.1.2、当前用户环境变量
1 | #编辑当前用户环境变量 |
加入环境变量配置,这是以源码包安装JDK
为例子
1 | #以最常见的JDK为例子,真实安装的JDK目录,一般源码包安装会这样设置 |
既然谈到了openjdk,我就简单的列举下Centos7.3默认安装openjdk的目录,如下图所示
如果你是开发人员,你可能还需要加入如下配置CLASS_PATH的配置,在lib目录下的dt.jar和tools.jar。在JDK5以后,貌似可以不用加此项,但是加了比较保险。
1 | #CLASS_PATH的配置,在lib目录下的dt.jar和tools.jar |
最后配置PATH,找到bin目录
1 | #PATH的设置,找到bin目录 |
二、配置当前用户环境变量
1、切换到当前用户
1.1、Redhat系列
1 | #切换至当前用户的home目录 |
1.2、Ubuntu系列
1 | #切换至当前用户的home目录 |
2、Oracle为例配置环境变量
下面列举的例子是新增了oracle用户,并且安装了oracle19c,然后配置oracle用户的环境变量。
2.1、永久生效
编辑当前用户的环境变量配置文件.bash_profile
,并加入如下配置,执行source .bash_profile
生效。
1 | #加入环境变量 |
2.2、临时生效
此方法在当前用户下配置环境变量只是临时生效,如果服务器不重启那可能一直有效。万一重启了,就失效了,相当于一次性的设置。建议在当前用户或者全局配置文件中写入相应的配置,效果更佳。
1 | #例如配置ORACLE_HOME |
相当于一次性的设置。建议在当前用户或者全局配置文件中写入相应的配置,效果更佳。
1 | #例如配置ORACLE_HOME |