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

 

    

        

posted @ 2020-02-10 11:39  北梗  阅读(891)  评论(0编辑  收藏  举报