结论:
1. 两个文件都是设置环境变量的文件。
2. /etc/profile 是永久性的环境变量,是全局变量,/etc/profile.d/ 设置对所有用户生效
3. /etc/profile.d/ 比 /etc/profile 好维护。不想要什么变量直接删除/etc/profile.d/下对应的.sh shell脚本即可,不用像/etc/profile需要改动此文件
区别:
/etc/profile 是文件
1:只有Login shell 启动时才会运行 /etc/profile 这个脚本,而Non-login shell 不会调用这个脚本。
说明:当一个用户登录Linux系统或使用su -命令切换到另一个用户时,也就是Login shell 启动时,首先要确保执行的启动脚本就是 /etc/profile 。
2:在/etc/profile 文件中设置的变量是全局变量。
/etc/profile.d 文件夹-下面包含很多.sh 脚本
1 .在/etc/profile.d 目录中存放的是一些应用程序所需的启动脚本,而这些脚本文件是用来设置一些变量和运行一些初始化过程的。其中包括了颜色、语言、less、vim及which等命令的一些附加设置。
2. /etc/profile.d 下的脚本之所以能自动执行,是因为在/etc/profile 中有一个for循环语句来调用这些脚本。
调用脚本如下:
[root@localhost ~]# vi /etc/profile
# /etc/profile
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
例 java环境配置
环境: centos7.5 jdk1.8
1 .上传解压jdk至:/usr/local/jdk/jdk1.8 目录
#jdk路径
[root@localhost ~]# cd /usr/local/jdk/jdk1.8/
[root@localhost jdk1.8]# pwd
/usr/local/jdk/jdk1.8
2. 环境变量配置
方式一:/etc/profile 配置
[root@localhost ~]# vi /etc/profile
#最后添加下面内容
export JAVA_HOME=/usr/local/jdk/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH
方式二:/etc/profile.d 配置
[root@localhost ~]# vi /etc/profile.d/java.sh
#java jdk1.8 env
export JAVA_HOME=/usr/local/jdk/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH