- A+
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,这样就能解决问题了,我真是太聪明了
结语:如果不能解决提出问题的人,就解决问题吧!!!!
欢迎讨论,共勉