區別:
1、兩個文件都是設置環境變量文件的,/etc/profile是永久性的環境變量,是全局變量,/etc/profile.d/設置所有用戶生效,同樣是永久變量,是全局變量。
2、/etc/profile.d/比/etc/profile好維護,不想要什么變量直接刪除/etc/profile.d/下對應的shell腳本即可,不用像/etc/profile需要改動此文件。
3、需要注意的是,/etc/profile和/etc/profile.d同樣是登錄(login)級別的變量,當用戶重新登錄shell時會觸發。所以效果一致。
4、通常設置登錄級別的變量,重新登錄shell即可,或者source /etc/profile。
原來:
設置環境變量通常寫在/etc/profile里面,現在看來真的很low,如果上百個應用,那么找得到和修改得到是不同的兩碼事!那么問題來了,升級后的做法是在/etc/profile.d/目錄下新建以應用命令的shell文件即可,然后不需要的變量直接刪除對於的shell文件。
現在:
同樣的寫法,只不過在/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的方式,改下方案吧,這樣運維才是王道!!!