了解Linux环境变量

发布时间:2019-07-26编辑:脚本学堂
Linux“环境变量”其实就是“系统级的快捷方式”,一般分为“程序变量”和“路径变量”两种,Linux平台默认区分环境变量的级别,至少分为系统级环境变量和用户级环境变量两个等级。

再加上linux/Unix系统分支太多、版本延续等原因,导致设置环境变量的涉及文件差别太大。于是,除长期使用某Linux平台用户外,大都对环境变量设置比较浆糊,只能随用随查。

注意:本文内容可能随Linux版本不同有细微差异。

一、linux环境变量文件

涉及文件有:
/etc/environment - 在登录时首先加载。
/etc/profile - 系统初始化文件,全局用户环境变量,登录时执行.
~/.bash_profile - 登录时设置生效,当用户登录时,该文件执行一次。
~/.bashrc - 个人交互式shell启动生效。当登录时及每次打开新Shell时,该该文件被执行。
~/.bash_login -个人登录Shell生效,登录时执行。
~/.bash_logout - 个人登录Shell清理文件,退出Shell时执行。
按照IBM网站说法/etc/environment本来是属于交互式登录时第一个执行的(先于/etc/profile),但是,天缘查看最新的centos 6.3上/etc/environment已为空文件,从/etc/profile说明来看,似乎系统更加倾向于要求用户不要修改这些默认的配置文件,而是把自己的配置文件放入专门的目录(/etc/profile.d/*.sh等位置)。

二、交互式登录SHELL

登录时执行顺序:
 

复制代码 代码如下:
execute /etc/profile
IF ~/.bash_profile exists THEN
execute ~/.bash_profile
ELSE
IF ~/.bash_login exist THEN
execute ~/.bash_login
ELSE
IF ~/.profile exist THEN
execute ~/.profile
END IF
END IF
 

登出时执行:
 

复制代码 代码如下:
IF ~/.bash_logout exists THEN
   execute ~/.bash_logout
END IF
 

请注意~/.bashrc执行的是/etc/bashrc:
 

复制代码 代码如下:
# cat ~/.bashrc
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

三、交互式非登录SHELL
 

复制代码 代码如下:
IF ~/.bashrc exists THEN
    execute ~/.bashrc
END IF

备注:
~/.profile 表示 $HOME/.profile
交互式登陆Shell与交互式非登录Shell区别:前者执行/etc/profile和~/.bash_profile, ~/.bash_login, and ~/.profile,后者只执行/etc/bash.bashrc和~/.bashrc。

您可能感兴趣的文章:
Linux环境变量的设置与查看
设置Linux环境变量的三种方法
Linux环境变量配置小结