centOS7關於登錄式shell和非登錄式shell的環境變量配置


登錄式shell:需要你輸入用戶名和口令才能獲得的shell叫做登錄式shell,比如用Xshell連接服務器

非登錄式shell:不需要你輸入用戶名和口令就能得到的shell叫做非登錄式shell,比如你在Xwindow下直接打開的shell

 

因為最近在學習Hadoop,需要在centOS上配置新的java環境變量(centOS7安裝后自帶openJDK),搞了好久才知道原來shell的獲取方式不同會影響環境變量的配置,所以記錄一下學習過程(我用的centOS7,別的linux可能會有出入),開始了:

  一、先來說卸載自帶的openJDK:

    在#后輸入rpm -qa | grep java,得到下圖:

    

    將除.noarch文件外的其余文件刪掉,用rpm -e --nodes +文件名命令刪除,如下圖:

    

    這時再輸入java會顯示 No such file or directory,說明自帶的jdk已經刪掉了

  二、再說安裝新的jdk,將你下載的jdk壓縮包上傳到OS中,解壓,我解壓后的jdk放到了/software中,路徑是:

    

     下面vi ~/.bash_profile進行環境變量的配置,修改文件內容如下:

    

    保存並退出,輸入source ~/.bash_profile使配置生效,輸入java -version,得到如下結果JDK的更換便成功了:

    

  三、重點來了,上邊的這些操作過程我都是在Xshell中完成的,也就是在登錄式shell中完成的,那我們再直接到虛擬機中看看環境變量是否還有用:

    

    可以看到沒用,為什么?因為我們在虛擬機直接打開的shell是非登錄式shell,我們之前將JAVA_HOME配置在~/.bash_profile,而非登錄shell加載時並不讀這個文件,所以才會command not found,那非登錄式shell的配置文件是哪個?是~/.bashrc,我們打開~看一下,如下:

    

    那我們配置一下這個文件看看效果,vi ~/.bashrc:

    保存並退出,source一下,輸入java -version查看結果,如下便成功了:

    

  四、有圖為證

  

圖片引自https://blog.csdn.net/leshami/article/details/77198412,所以現在清晰點了嗎?不清晰再附幾個比較好的鏈接可以學習:

    https://blog.csdn.net/leshami/article/details/77198412

    https://blog.csdn.net/gshzh00/article/details/90286458

 

    

        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM