一致很懵在另一台电脑上并没有问题,一开始以为可能系统版本不一致,centos 6.5可能有特定的配置但是一番百度后发现并没有,而且通过同事电脑测试了,也没有这个问题。后来根据网上一片帖子讲述了他在一次java环境变量配置后重启失效的问题,说是因为有别的软件覆盖了他的环境变量。
根据这个思路查询启动时的执行的各个脚本最终发现了es的我的启动脚本中向/.bashrc文件写入的一段用于初始化时同步时钟,并调用了一个更新配置ik插件的脚本。这段中修改了profile文件中的配置如果遇到更新就会复写。修改后并没有解决。随后疑心大起一度怀疑那段代码或配置或曾经用过的(特别时百度复制的脚本)中有问题。随后停下所有服务,一个个挨个启动检查,结果很悲催没有发现任何地方有问题。
第今儿下班后,不死心,有从头走了一遍。每次重启使用了su 指定了用户,怀疑是不是用户问题之后把es,mysql等几个服务的用户改为root并重新配置环境变量后好了,至此可以确定原因肯定与不同用户有关。按照这个方向查找资料如下发现了不同方式读取加载不同。
(1)如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~ /.bash_profile。
(2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc
注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout
执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。
上面的例子凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
分析应该是因为我所有环境变量配置的都是用户的,但是切换用户时会重新读取加载,有时通过终端,有时通过图形界面,不同用户操作引发的。
记录下,留以订正理解!