• 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

        

            

  • 相关阅读:
    第11条:谨慎地覆盖clone
    第10条:始终要覆盖toString
    第9条:覆盖equals时总是覆盖hashCode
    第8条:覆盖equals时请遵守通用约定
    第7条:避免使用终结方法
    第6条:消除过期的对象引用
    第5条:避免创建不必要的对象
    第4条:通过私有构造器来强化不可实例化能力
    第3条:用私有构造器或者枚举类型强化Singleton属性
    第2条:遇到多个构造器参数时要考虑用构建器
  • 原文地址:https://www.cnblogs.com/clljs/p/12290306.html
Copyright © 2020-2023  润新知