本章内容
-
什么是环境变量
-
设置环境变量
-
删除环境变量
-
默认shell环境变量
-
设置PATH环境变量
-
定位系统环境变量
-
可变数组
-
使用命令别名
在Linux系统上有很多地方可以设置环境变量,了解去哪里设置环境相应的环境变量很重要。
5.1 什么是环境变量
bash shell用一个称作环境变量的特性来存储有关shell会话和工作环境的信息。它允许你再内存中存储数据,以便运行在shell上的程序和脚本访问。
在bash shell中,环境变量分为两种:
<1>全局变量
<2>局部变量
注意:尽管bash shell使用一致的专有环境变量值,但不同的Linux发行版经常会添加它们自有的环境变量。
5.1.1 全局环境变量
全局环境变量不仅对shell会话可见,对所有shell创建的子进程也可见。局部变量则只对创建它们的shell可见。
系统环境变量一律使用全大写字母以区别于普通用户的环境变量。
查看全局变量,可用printenv或env命令
$env | head
ORBIT_SOCKETDIR=/tmp/orbit-dsm
HOSTNAME=localhost.localdomain
IMSETTINGS_INTEGRATE_DESKTOP=yes
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
XDG_SESSION_COOKIE=cd9507732763290cc6e8614700000058-1366816714.182117-1120993564
GTK_RC_FILES=/etc/gtk/gtkrc:/home/dsm/.gtkrc-1.2-gnome2
WINDOWID=31457284
QTDIR=/usr/lib/qt-3.3
这里只显示开始10行。如你所见,系统为bash shell设置了很多全局环境变量。它们中的大部分都是系统在用户登录系统时设置的。
要显示单个环境变量的值,可用echo命令。
当引用环境变量时,必须在环境变量的名称前放置一个$符:
$echo $HOME
/home/user
正如前面提到的,全部环境变量在当前shell会话的子进程中也是可见的:
$bash
$echo $HOME
/home/user
在这个例子中,用bash命令启动一个新的shell后,显示了HOME环境变量的当前值,这个值是在你登录进主shell时设定的。当然,这个值在子shell进程中依然是存在的。