时间:2017年07月31日星期一
说明:本文部分内容均摘取自书籍《Linux命令行与shell脚本编程大全》,版权归原作者所有。《Linux命令行与shell脚本编程大全》(第三版)第六章学习总结
第六章:使用Linux环境变量
本章内容:
什么是环境变量
创建自己的局部变量
删除环境变量
默认shell环境变量
设置PATH环境变量
定位环境文件
数组变量
6.1 什么是环境变量
bash shell用一个叫作环境变量(environment variable)的特性来存储有关shell会话和工作环境的信息(这也是他们被称作环境变量的原因)。
在bash shell中,环境变量分为两类
全局变量
局部变量
6.1.1 全局环境变量
命令:printenv
命令格式:printenv
命令说明:查看全局变量
命令:env
命令格式:env
命令说明:查看全局变量
可以直接使用环境变量,如:echo $HOME 或 ls $HOME
6.1.2 局部环境变量
命令:set
命令格式:set
命令说明:查看局部变量、全局变量以及用户定义变量
6.2 设置用户定义变量
6.2.1 设置局部用户定义变量
命令格式:key="value"
命令说明:设置环境变量key的值为value
命令格式:echo $key
命令说明:输出环境变量key的值
6.2.2 设置全局环境变量
命令:export
命令格式:export key
命令说明:将一个局部变量的key导出到全局环境中
6.3 删除环境变量
命令:unset
命令格式:unset key
命令说明:删除已经存在的环境变量
窍门:在涉及环境变量名时,什么时候该使用$,什么时候不该使用$,实在让人摸不着头脑。记住一点就行了:如果要用到变量,使用$;如果要操作变量,不使用$。这条规则的一个例外就是使用printenv显示某个变量的值。
如果你是在子进程中删除了一个全局环境变量,这只对子进程有效。该全局变量在父进程中依然可用
6.4 默认的shell环境变量
默认情况下,bash shell会用一些特定的环境变量来定义系统环境。常用系统环境变量
PWD:当前工作目录
EUID:当前用户的有效用户ID(数字形式)
UID:当前用户的真实用户ID(数字形式)
6.5 设置PATH环境变量
当你在shell命令行界面中输入一个外部命令时,shell必须搜索系统来找到对应的程序。PATH环境变量定义了用于进行命令和程序查找的目录。使用命令:echo $PATH,查看可供shell用来查找命令和程序的目录,PATH中的目录使用冒号分隔。
命令格式:PATH=$PATH:/home/demo/scripts
命令说明:将目录/home/demo/scripts添加到PATH环境变量中
窍门:如果希望子shell也能找到你的程序的位置,一定要记得把修改后的PATH环境变量导出。
注意:对PATH变量的修改只能持续到退出或重启系统。这种效果并不能一直持续。
6.6 定位系统环境变量
6.6.1 登录shell
当你登录Linux系统时,bash shell会作为登录shell启动。登录shell会从5个不同的启动文件里读取命令
/etc/profile
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile
/etc/profile文件是系统上默认的bash shell的主启动文件。系统上的每个用户登录时都会执行这个启动文件。
6.6.4 环境变量持久化
对全局环境变量来说,可能更倾向于将新的或修改过的变量设置放在/etc/profile文件中。注意:如果系统升级后,这个文件也会跟着更新,所以之前设置的环境变量将不存在。
6.7 数组变量
要给某个环境变量设置多个值,可以把值放在括号里,值与值之间用空格分隔
mytest=(ont two three four five)
echo $mytest
echo ${mytest[2]}
窍门:环境变量数组的索引值都是从零开始。
6.8 小结
本章介绍了Linux的环境变量。全局环境变量可以在对其作出定义的父进程所创建的子进程中使用。局部环境变量只能在定义它们的进程中使用。本章介绍了env、printenv、set、export、unset命令。
本章学习命令个人总结如下:
env:显示全局变量
printenv:显示全局变量
set:显示局部变量、全局变量及用户自定义变量
export:导出为全局环境变量
unset:删除环境变量