區別:java
一、兩個文件都是設置環境變量文件的,/etc/profile是永久性的環境變量,是全局變量,/etc/profile.d/設置全部用戶生效,一樣是永久變量,是全局變量。shell
二、/etc/profile.d/比/etc/profile好維護,不想要什麼變量直接刪除/etc/profile.d/下對應的shell腳本便可,不用像/etc/profile須要改動此文件。運維
三、須要注意的是,/etc/profile和/etc/profile.d一樣是登陸(login)級別的變量,當用戶從新登陸shell時會觸發。因此效果一致。spa
四、一般設置登陸級別的變量,從新登陸shell便可,或者source /etc/profile。code
原來:blog
設置環境變量一般寫在/etc/profile裏面,如今看來真的很low,若是上百個應用,那麼找獲得和修改獲得是不一樣的兩碼事!那麼問題來了,升級後的作法是在/etc/profile.d/目錄下新建以應用命令的shell文件便可,而後不須要的變量直接刪除對於的shell文件。class
如今:登錄
一樣的寫法,只不過在/etc/profile.d/目錄下新建對應的shell便可,好比新建java的:變量
vi /etc/profile.d/java.sh原理
export JAVA_HOME=/data/service/java
原理:
不管在Linux仍是再Mac下,均可以用這個方式去實現,分析/etc/profile這個文件你會發現有這麼一段shell,這個就是關鍵所在:
if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r $i ]; then . $i fi done unset i fi
總結:
不要再使用之前那麼low的方式,改下方案吧,這樣運維纔是王道!!!