全局变量设定
/etc/profile 和 /etc/bashrc 是系统全局环境变量设定。
/etc/profile
用来设置系统环境参数,比如$PATH
. 这里面的环境变量是对系统内所有用户生效的。
/etc/bashrc
这个文件设置系统bash shell相关的东西,对系统内所有用户生效。只要用户运行bash命令,那么这里面的东西就在起作用。
用户家目录下的私有环境变量设定
~/.profile 和 ~/.bashrc是用户家目录下的私有环境变量设定
~/.bashrc
作用类似于/etc/bashrc
, 只是针对用户自己而言,不对其他用户生效。
另外/etc/profile
中设定的变量(全局)的可以作用于任何用
户,而~/.bashrc
等中设定的变量(局部)只能继承/etc/profile
中的变量,他们是”父子”关系.
某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次
~/.profile
可以设定本用户专有的路径,环境变量等,它只能登入的时候执行一次
~/.bash_profile
用来设置一些环境变量,功能和/etc/profile
类似,但是这个是针对用户来设定的,也就是说,你在/home/user1/.bash_profile
中设定了环境变量,那么这个环境变量只针对 user1 这个用户生效.
注!
~/.bash_profile
是交互式、login 方式进入bash
运行的,意思只有用户登录时才会生效。
~/.bashrc
是交互式 non-login 方式进入bash
运行的,用户不一定登录,只要以该用户身份运行命令行就会读取该文件。
读取环境三步骤
当登入系统时候获得一个shell进程时,其读取环境设定档有三步
- 首先读入的是全局环境变量设定档 /etc/profile ,然后根据其内容读取额外的设定的文档,如 /etc/profile.d 和 /etc/inputrc ;
- 然后根据不同使用者帐号,去其家目录读取 ~/.bash_profile ,如果这读取不了就读取 ~/.bash_login ,这个也读取不了才会读取 ~/.profile ,这三个文档设定基本上是一样的,读取有优先关系;
- 然后在根据用户帐号读取 ~/.bashrc 。
参考博客
https://blog.csdn.net/aa1209551258/article/details/82023389
https://www.cnblogs.com/yuanqiangfei/p/10232148.html