# shell中的环境变量
环境变量中存储有关shell会话和工作环境的信息,允许用户在内存中存储数据,以便程序
或shell中运行的脚本能够轻松访问到它们。
# 全局变量
全局环境变量对于shell会话和所有生成的子shell都是可见的。
Linux系统在启用bash会话时就设置了一些全局环境变量。
系统环境变量基本上都是使用全大写字母,以区别于普通用户的环境变量。
要查看全局变量,可以使用 env
或 printenv
命令。
查看某个环境变量的值,
echo $HOME
或者:
printenv HOME
# 局部环境变量
局部环境变量,只能在定义它们的进程中可见。
Linux系统并没有一个只显示局部环境
变量的命令。
set
命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量
以及用户定义变量。
# 创建环境变量
创建局部环境变量:
my_variable="I am Global now"
使用export
命令可以将其变成全局变量:
export my_variable=$my_variable
# 删除环境变量
使用unset
命令:
unset my_variable
# PATH环境变量
在shell命令行界面中输入一个外部命令时,shell必须搜索系统来找到对应
的程序。
PATH 环境变量定义了用于进行命令和程序查找的目录。
应用程序放置可执行文件的目录常常不在 PATH 环境变量所包含的目录中。解决的
办法是保证 PATH 环境变量包含了所有存放应用程序的目录。
export PATH=PATH:/xxx/sw/gcc/bin
为了让环境变量的作用持久化,需要了解在bash在启动时会检查的启动文件或环境文件。
启动bash shell有3种方式:
- 登录时作为默认登录shell
- 作为非登录shell的交互式shell
- 作为运行脚本的非交互shell
登录shell会从5个不同的启动文件里读取命令:
/etc/profile
文件是系统上默认的bash shell
的主启动文件,系统上的每个用户登录时都会执行这个启动文件。$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile
变量设置放在/etc/profile
文件中,可不是什么好主意。如果升级了所用的发行版,这个文件也会跟着更新,那所有定制过的变量设置就都没有了。
最好是在/etc/profile.d
目录中创建一个以.sh
结尾的文件。
使用数组管理环境变量:
myarray=(one two three)
# 首元素
echo $myarray
# 打印第三个元素
echo ${myarray[2]}
# 显示整个数组变量
echo ${myarray[*]}
# unset 命令后跟上数组可删除数组某个值
unset myarray[2]
# unset 命令后跟上数组名可删除整个数组
unset myarray