1、問題 測試伺服器java環境變數老是失效(非常氣人,測試同事老是說系統壞了,我感覺在懷疑我的技術) 我以前的配置是打開 /etc/profile 文件,在後面加上環境變數 整體環境是在宿主機上部署了一套docker,使用docker進行java環境變數配置,然後使用jar包文件進行java功能實 ...
1、問題
測試伺服器java環境變數老是失效(非常氣人,測試同事老是說系統壞了,我感覺在懷疑我的技術)
我以前的配置是打開 /etc/profile 文件,在後面加上環境變數
整體環境是在宿主機上部署了一套docker,使用docker進行java環境變數配置,然後使用jar包文件進行java功能實現
export PATH CLASSPATH JAVA_HOMEVA_HOME=/www/java/jdk8
CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME
使用 source /etc/profile 進行重載配置(往常到這一步已經可以了,但是,最近莫名其妙的就開始崩潰,我懷疑是我另一個開發的同事故意的,但是我沒有證據,要是我找到證據,沒有一個火鍋好不了)
2、分析
由於我只使用了 etc/profile 文件
按照官方解釋,對於每一個登錄的用戶,都是可以載入全局變數的
問題就出在這裡,我使用exit退出之後,重新進入docker,奇怪的事情來了,它沒有啟動,這裡應該是進入docker不算打開一個shell,所以沒有載入,具體需要試一試,但是我這裡的問題確實是失效了,所以etc/profile文件對於docker進入可能有一些奇怪的問題(畢竟正式服我也是這樣配置的,完全沒有問題,這裡下一期繼續研究,現在先解決測試)
3、開始修複(我是反對的,程式狗表示不想進化,我就想躺平,能用不好蠻,證明我還有點作用,這個想法有問題,不要學不要學)
參考1: https://blog.csdn.net/qq_45927266/article/details/120224171
有四個在系統啟動或者是進入shell的時候會訪問的數據文件:
(1) /etc/profile
此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行。並從 /etc/profile.d 目錄的配置文件中收集 shell 的設置。如果你有對 /etc/profile 有修改的話必須得 source 一下你的修改才會生效,此修改對每個用戶都生效。
(2) /etc/bash.bahsrc
為每一個運行 bash shell 的用戶執行此文件。當 bash shell 被打開時,該文件被讀取。如果你想對所有的使用 bash 的用戶修改某個配置併在以後打開的 bash 都生效的話可以修改這個文件,修改這個文件不用重啟,重新打開一個 bash 即可生效。
(3) ~/.bash_profile(顯然不是我這個問題)
每個用戶都可使用該文件輸入專用於自己使用的 shell 信息,當用戶登錄時,該文件僅僅執行一次!預設情況下,它設置一些環境變數,執行用戶的~/ .bashrc 文件。此文件類似於 /etc/profile,也是需要需要 source 才會生效,/etc/profile 對所有用戶生效,~/.bash_profile 只對當前用戶生效。
(4) ~/.bashrc(這裡顯然也不是)
該文件包含專用於你的 bash shell 的 bash 信息,當登錄時以及每次打開新的 shell 時,該文件被讀取。(每個用戶都有一個 ~/.bashrc 文件,在用戶目錄下) 此文件類似於 /etc/bashrc,不需要重啟就可以生效,重新打開一個 bash 即可生效,/etc/bashrc 對所有用戶新打開的 bash 都生效,但 ~/.bashrc 只對當前用戶新打開的 bash 生效。
我使用的是 /etc/profile 不行,我準備使用(2)試一下,從描述上看,應該是可以。
4、解決
(使用單個命令都會有問題,使用(1)退出之後就不生效,使用(2)能解決問題,但是我這個伺服器有自己的想法,他沒有解決,我使用時混合式)
還是使用配置 /etc/profile 文件的方法去解決問題,不同點在於為了防止下一次進入的時候環境失效的問題,我使用了/etc/bash.bahsrc 文件,在裡面最後加上 source /etc/profile,這樣就能解決問題了,我真是太聰明瞭
結語:如果不能解決提出問題的人,就解決問題吧!!!!
歡迎討論,共勉