Linux命令行与shell脚本编程大全学习笔记

第6章 使用Linux环境变量

2020-02-25  本文已影响0人  Hannahhao

6.1 什么是环境变量

环境变量(environment variable):储存有关shell会话和工作环境的信息。
分为两类:

6.1.1 全局环境变量

系统环境变量:大写字母
普通用户的环境变量:小写字母
查看全局变量:env命令 或 printenv命令(显示个别环境变量的值)


echo命令也可显示变量的值,需在变量前加上$符号,同时也能够让变量作为命令行参数。

全局环境变量可用于进程的所有子shell,若用bash生成一个子shell,显示HOME环境变量的当前值,这个值和父shell中一模一样。

6.1.2 局部环境变量

局部环境变量只能在定义它们的进程中可见。目前无一个只显示局部环境变量的命令。
set命令:显示某个特定进程设置的所有环境变量,包括局部变量、全局变量和用户自定义变量

6.2 设置用户定义变量

6.2.1 设置局部用户定义变量

一旦启动了bash shell/执行一个shell脚本,就能创建在这个shell进程内可见的局部变量。
通过等号=给环境变量赋值,值可以是数值或字符串。


如果要给变量赋值一个含有空格的字符串值,必须用单引号来界定字符串的首和尾。
记住!变量名、等号和值之间没有空格!
设置了局部环境变量后,就能在shell进程任何地方使用它,但如果生成了另外一个shell,它在那个shell里不可用。

如果你在子进程中设置了一个局部变量,一旦退出了子进程,那个局部环境变量就不可用了。

6.2.2 设置全局环境变量

创建全局环境变量的方法是export命令:先创建一个局部环境变量,然后再导出到全局环境中。(变量名前面不需要加$)

修改子shell中全局环境变量并不会影响到父shell中该变量的值。 子shell无法使用export命令改变父shell中全局环境变量的值。

6.3 删除环境变量

unset命令:删除已经存在的环境变量(引用环境变量是不用$)。

用到变量时,加$;操作变量时,不用加。

和修改变量一样,在子shell中删除全局变量后,无法将效果反映到父shell中。

6.4 默认的shell环境变量

bash shell支持的Bourne变量
bash shell环境变量

6.5 设置PATH环境变量

$ echo $PATH
$ PATH=$PATH:/home/hannah/Scripts
$ echo $PATH
or
$ PATH=$PATH:. #单点符代表当前目录

把目录加到PATH环境变量后,就可以在虚拟目录结构中任何位置执行程序。但对PATH 变量的修改只能持续到退出或者重启系统,不能一致持续。

6.6 定位系统环境变量

启动bash shell有3种方式:

6.6.1 登陆shell

当登录Linux系统时,bash shell会作为登录shell启动。
登录shell会从5个不同的启动文件里读取命令:

$HOME/.bash_profile;$HOME/.bashrc;$HOME/.bash_login;$HOME/.profile

6.6.2 交互式shell进程

如果bash shell不是登录系统时启动,而是敲bash时启动,那么叫交互式shell。它不会访问/etc/profile,只会检查用户HOME目录的.bashrc文件。

6.6.3 非交互式shell

系统执行shell脚本时用的就是这种shell,不同地方在于没有命令行提示符。

6.6.4 环境变量持久化

在/etc/profile.d目录中创建一个以.sh结尾的文件,把所有新的或修改过的全局环境变量设置放在这个文件中。
在大多数发行版中,储存个人用户永久性bash shell 变量的地方是$HOME/.bashrc文件。
(可以把自己的alias设置放在$HOME/.bashrc文件中,使其效果永久化)

6.7 数组变量

环境变量可以作为数组使用。
数组:储存多个值的变量。
要给某个环境变量设置多个值,可以放在括号里,值与值之间空格分隔。



6.8 小结

上一篇 下一篇

猜你喜欢

热点阅读