憑什麼,爲什麼每次登錄要手動 source /etc/profile,一定是有問題的

學藝不精,多難受啊

特別生氣,特別難受。。。
linux技能並不咋樣,所以一般都是百度來安軟件的
JDK以及MAVEN環境也是這樣的。

環境變量的問題

今天遇到個問題就是每次必須登錄 source /etc/profile 才能使java -version命令有效.
但是 /etc/profile 是每次登錄自動加載的啊(這個一定是對的),而我在裏面寫了java的環境變量,爲什麼呢?
我登錄之後馬上打印 $PATH ,嗯確實沒有jdk的環境變量,那麼到底去哪裏了呢?

解決問題ing

我們來看看執行的順序:
1./etc/profile
2./etc/environment
3.~/.bash_profile
4.~/.bashrc
5./etc/bashrc
我在 1的末尾打印了個 echo $PATH ,有JDK的環境變量
刪除上一步的echo,在3的末尾打了個echo $PATH ,無JDK的環境變量
刪除上一步的echo,在3的開頭打了個echo $PATH ,有JDK的環境變量
觀看3的源碼
在這裏插入圖片描述
不難看出由3進入了4,而在3的開頭環境變量依然有JDK,結尾沒有,則問題一定出在了4中
看看4的源碼
在這裏插入圖片描述
那麼我們能看出4調用了5,那麼問題在5(/etc/bashrc)
我在5的結尾發現了一條奇怪的東西

	export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin:/root/bin

解決問題OVER

正是這步直接指定了環境變量,而且裏面並沒有JDK
???這是什麼操作,而且這個決不是我寫的。
想了想。我安裝了git,當時那些操作到底具體操作了什麼,我也不知道。
多半是GIT安裝編譯的時候,自動在/etc/bashrc裏面添加了這條命令(應該是安裝的時候根據當時的環境變量自動生成的一條去命令),而這條命令並沒有jdk的環境變量,讓我好生鬱悶。

刪了它吧?
把它改成 export PATH=$PATH:/usr/local/git/bin吧
編譯時用當時即時的PATH值替換了動態$PATH導致這一系列問題

完美解決

感悟

授之以魚不如授之以漁
那麼買魚不如學學怎麼捕魚,萬一有一天漁民不捕魚了呢?
不恰當的比喻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章