在你登陆Linux系统启动一个bash shell时,默认状况下bash在几个文件中查找命令,这几个文件成为启动文件;
bash检查的启动文件取决于你启动bash shell的方式,启动bash shell有3中方式:linux
当你登陆Linux系统时,登录了shell会从5个不一样的启动文件里读取命令:shell
1.1 /etc/profile文件 主要登录了linux系统,bash就会执行/etc/profile/启动文件中的命令
每一个发行版的/etc/peofile文件都有不一样的设置和命令bash
以上程序含有for循环是用来迭代/etc/profile.d目录下全部文件函数
1.2 $HOME目录下的启动文件 ,通常linux发行版只用到下面4个里面的1~2个文件:测试
他们都是隐藏文件,位于用户HOME目录下,因此每一个用户均可以编辑这些文件并添加本身的环境变量,这些环境变量会在每次启动bash shell会话时候生效。
如我的的测试机上面只有.profile .bashrcspa
若是你在命令行提示符敲下bash命令,你启动的shell称做为交互式shell;
若是bash是做为交互式shell启动的,它就不会去访问/etc/profile文件,而会去用户的HOME目录检查.bashrc是否存在;
.bashrc文件有两个做用;命令行
系统执行shell脚本时用的就是非交互式shell,不一样的地方在于它没有命令行提示符。
当shell启动一个非交互式shell进程时,它会检查这个环境变量来查看要执行的启动文件,若是有指定的文件,shell会执行该文件里的命令,这一般包括shell脚本变量设置。htm
1. 按变量的生存周期来划分,Linux变量可分为两类: blog
2.永久环境变量,对全部用户有效
修改/etc/profile文件也可,可是若是升级所用发行版也同样会更新,定制过的变量会消失
建议修改/etc/profile.d目录 中建立一个以.sh为结尾的文件,把定制过的全局环境变量放置其中。
3.永久环境变量,对单一用户有效
修改用户目录下的.bash_profile文件
4. 临时环境变量,只对当前shell(BASH)有效
在shell的命令行下直接使用[export 变量名=变量值] 定义变量,
该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,
shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,须要使用的话还须要从新定义。