今天安装jdk环境,使用tar包安装完成后需要添加环境变量
一般教程上的做法:
export $JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
source /etc /profile
这种方法我觉得有两个问题:
1、系统重启后环境添加的环境变量消失。因为这种方法只对当前用户当前会话有效
2、基于第一点,其实第三句指令“source /etc/profile” 不用执行也可生效,我觉得完全上画蛇添足。
本着不探索不罢休的精神,就来深究一下这个PATH变量,不就是个变量嘛~~~
表面上比较有关联的就是两个地方:/etc/profile文件和/etc/profile.d/
cat 一下profile 文件,里面提到了会执行/etc/profile.d/这个文件夹里面的.sh文件。
这样我们直接把PATH变量的修改放到/etc/profile.d/里面一个文件就行,或者自己添加个.sh文件也可以。我就直接加到/etc/profile.d/sh.local 文件里。
vi /etc/profile.d/sh.local
会看到文件里有一句话:
Add any required envvar overrides to this file, it is sourced from /etc/profile
翻译一下就是说:把任何要加的环境变量到这个文件,/etc/profile 就是加载这个文件。
像我这样把java的环境变量加进去就可以了
JAVA_HOME=/usr/local/jdk1.8
PATH=$PATH:$JAVA_HOME/bin
第一句是指定一个变量JAVA_HOME
第二句是把java的路径加到PATH里面,当然也可以写成下面这样
PATH=$PATH:/usr/local/jdk1.8/bin
或者:
PATH=/usr/local/jdk1.8/bin:$PATH
这样再执行source /etc/profile就可以了
另外,再多说一点,再执行一次source /etc/profile,环境变量就好再添加一次。
可以使用cat $PATH 查看
这个profile的脚本完全没有考虑重复添加环境变量的问题啊!!!其实也没关系,重复添加完全不影响使用。因为用户输入的指令会依次在PATH的路径里查找。
补充一下,一般生产环境下是不使用我这种方式的,大家不要被我误导。
生产环境的推荐用法:
将
export NODE_HOME=/var/node-v8.9.4-linux-x64
export PATH=$NODE_HOME/bin:$PATH
export NODE_PATH=$NODE_HOME/lib/node_modules:$PATH
写入到root用户~/.bashrc文件中,然后:
source ~/.bashrc
使环境变量生效。