~/.bashrc和./bash_profile的一点小区别------说说~/.bashrc的不生效问题

版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则会用法律维权。 https://blog.csdn.net/stpeace/article/details/82713453

       最近在~/.bashrc中设置了环境变量(export x=yyy), 对于新打开的shell, 环境变量不生效,颇为纳闷。 其实, 这里涉及到~/.bashrc的生效逻辑:

       1.  直接登录,也就是login shell,  环境变量不生效, 执行bash, 进入non-login shell,  环境变量生效

       2.  直接登录,也就是login shell,  环境变量不生效, 用source ~/.bashrc则环境变量生效

       在mac和ubuntu中均进行了测试,ubuntu结果如下:

ubuntu@VM-0-15-ubuntu:~$ echo $x

ubuntu@VM-0-15-ubuntu:~$ bash 
ubuntu@VM-0-15-ubuntu:~$ echo $x
yyy
ubuntu@VM-0-15-ubuntu:~$ exit
exit
ubuntu@VM-0-15-ubuntu:~$ echo $x

ubuntu@VM-0-15-ubuntu:~$ source ~/.bashrc 
ubuntu@VM-0-15-ubuntu:~$ echo $x
yyy
ubuntu@VM-0-15-ubuntu:~$ 

       login shell居然不生效, 太鸡肋了, 还是放在~/.bash_profile中吧(export y=zzz), 无论是login shell还是非login shell, 都生效:

ubuntu@VM-0-15-ubuntu:~$ echo $y
zzz
ubuntu@VM-0-15-ubuntu:~$ bash
ubuntu@VM-0-15-ubuntu:~$ echo $y
zzz
ubuntu@VM-0-15-ubuntu:~$ 

       不多说。

       

猜你喜欢

转载自blog.csdn.net/stpeace/article/details/82713453