(014) Linux之环境

十年运维系列之基础篇 - Linux

作者:曾林 

联系:1494445739@qq.com

网站:www.jplatformx.com

版权:文章未经同意请勿转载


一、引言

      在shell会话调用环境期间,shell会存储大量的信息。有一些程序会查找环境中存储的变量来调整自己的行为。知道了这一点之后,用户就可以使用环境来自定义shell。

 

二、环境中存储的是什么

      尽管shell在环境中存储了两种基本类型的数据,但是在bash中,这两种类型基本上没有区别。这两种数据类型分别是环境变量和shell变量。shell变量是由bash存放的少量数据,环境变量就是除此之外的所有其他变量。除变量之外,shell还存储了一些编程数据,也就是别名和shell函数。

      要了解环境中存储的内容,需要用到集成在bash中的set命令或者printenv程序。不同的是,set命令会同时显示shell变量和环境变量,而printenv只会显示环境变量。

      set命令截图如下(其中包括环境变量和shell变量):

       printenv命令截图(只包括环境变量):

      环境变量中包含了相当多的变量,下表展示了一些常用的有趣的环境变量。

变量 说明
SHELL 本机shell名称
HOME 本机主目录的路径名
LANG 定义了本机语言的字符集和排序规则
OLD_PWD/PWD 先前的工作目录/当前的工作目录
PATH 以冒号分隔的一个目录列表,当用户输入一个可执行程序的名称时,会查找该目录列表
PS1 提示符字符串1.定义了本机shell系统提示符的内容。
TERM 终端类型的名称。类UNIX系统支持很多种终端协议;此变量定义了本机终端模拟器使用的协议
USER 用户名

 

三、环境是如何建立的

      用户登录系统之后,bash程序就会启动并读取一系列称为启动文件的配置脚本,这些脚本定义了所有用户共享的默认环境。接下来,bash会读取更多存储在主目录下用于定义个人环境的启动文件。这些步骤执行的确切顺序是由启动的shell会话类型决定的。

      shell会话存在两种类型,分别为login shell和non-login shell会话。

      login shell会话会提示用户输入用户名和密码,如虚拟控制台会话。而我们在GUI中启动的终端会话就是一个典型的non-login shell会话。

      login shell会读取一个或多个启动文件,如下表显示:

文件 说明
/etc/profile 适用于所有用户的全局配置脚本
~/.bash_profile 用户的个人启动文件。可扩展或重写全局配置脚本中的设置
~/.bash_login 若~/.bash_profile缺失,则bash尝试读取此脚本
~/.profile 若~/.bash_profile和~/.bash_login均缺失,则bash尝试读取此文件。在基于Debian的Linux版本中(比如Ubuntu),这是默认值

      下表是non-login shell读取的启动文件:

文件 内容
/etc/bashrc 适用于所有用户的全局配置脚本
~/.bashrc 用户的个人启动文件。可扩展或重写全局配置脚本中的设置

      在读取以上启动文件之外,non-login shell还会继承父类进程的环境,父类进程经常就是一个login shell。

      在普通用户看来,~/.bashrc可能是最重要的启动文件,因为系统几乎总是要读取它。non-login shell会默认读取~/.bashrc,而大多数login shell的启动文件也能以读取~/.bashrc文件的方式来编写。

 

posted @ 2015-02-26 10:21  jplatformx  阅读(137)  评论(0编辑  收藏  举报