1

时间: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:删除环境变量

妙手空空
1.3k 声望370 粉丝

博观而约取,厚积而薄发