人,一定要靠自己 人,一定要靠自己

没有人会关心你付出过多少努力,撑得累不累,摔得痛不痛,他们只会看你最后站在什么位置,然后羡慕或者鄙夷

目录
每次重启电脑或服务都需要 source 才能使一部分配置生效.
/    

每次重启电脑或服务都需要 source 才能使一部分配置生效.

今天遇到个问题就是每次重启es服务或重启电脑都需要 source 才能使一部分配置生效.

一致很懵在另一台电脑上并没有问题,一开始以为可能系统版本不一致,centos 6.5可能有特定的配置但是一番百度后发现并没有,而且通过同事电脑测试了,也没有这个问题。后来根据网上一片帖子讲述了他在一次java环境变量配置后重启失效的问题,说是因为有别的软件覆盖了他的环境变量。

根据这个思路查询启动时的执行的各个脚本最终发现了es的我的启动脚本中向/.bashrc文件写入的一段用于初始化时同步时钟,并调用了一个更新配置ik插件的脚本。这段中修改了profile文件中的配置如果遇到更新就会复写。修改后并没有解决。随后疑心大起一度怀疑那段代码或配置或曾经用过的(特别时百度复制的脚本)中有问题。随后停下所有服务,一个个挨个启动检查,结果很悲催没有发现任何地方有问题。

第今儿下班后,不死心,有从头走了一遍。每次重启使用了su 指定了用户,怀疑是不是用户问题之后把es,mysql等几个服务的用户改为root并重新配置环境变量后好了,至此可以确定原因肯定与不同用户有关。按照这个方向查找资料如下发现了不同方式读取加载不同。

  1. 图形模式登录时,顺序读取:/etc/profile和~/.profile
  2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc
  3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile
  4. 从其它用户su到该用户,则分两种情况:

(1)如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~ /.bash_profile。

(2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc

  1. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout

  2. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。

  3. 上面的例子凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。

    分析应该是因为我所有环境变量配置的都是用户的,但是切换用户时会重新读取加载,有时通过终端,有时通过图形界面,不同用户操作引发的。
    记录下,留以订正理解!