Keep on going, never give up.

Linux环境变量介绍

Linux“环境变量”其实就是“系统级的快捷方式”,一般分为“程序变量”和“路径变量”两种,Linux平台默认区分环境变量的级别,至少分为系统级环境变量用户级环境变量两个等级。再加上Linux/Unix系统分支太多、版本延续等原因,导致设置环境变量的涉及文件差别太大。于是,除长期使用某Linux平台用户外,大都对环境变量设置比较浆糊,只能随用随查。

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

一、Linux环境变量文件

涉及文件有:

  1. /etc/environment - 在登录时首先加载。
  2. /etc/profile - 系统初始化文件,全局用户环境变量,登录时执行.
  3. ~/.bash_profile - 登录时设置生效,当用户登录时,该文件执行一次。
  4. ~/.bashrc - 个人交互式SHELL启动生效。当登录时及每次打开新Shell时,该该文件被执行。
  5. ~/.bash_login -个人登录Shell生效,登录时执行。
  6. ~/.bash_logout - 个人登录Shell清理文件,退出Shell时执行。

按照IBM网站说法/etc/environment本来是属于交互式登录时第一个执行的(先于/etc/profile),但是,天缘查看最新的CentOS 6.3上/etc/environment已为空文件,从/etc/profile说明来看,似乎系统更加倾向于要求用户不要修改这些默认的配置文件,而是把自己的配置文件放入专门的目录(/etc/profile.d/*.sh等位置)。

以bash命名的文件就是基于SHELL的环境变量,bash全称Bourne Again shell,是个UNIX SHELL。

二、交互式登录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。

参考地址:

http://zh.wikipedia.org/zh-hk/Bash

http://linux.vbird.org/linux_basic/0320bash.php

http://stackoverflow.com/questions/415403/whats-the-difference-between-bashrc-bash-profile-and-environment

http://www.thegeekstuff.com/2008/10/execution-sequence-for-bash_profile-bashrc-bash_login-profile-and-bash_logout/

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.