6.1查看环境变量
#查看全局变量
printenv
env
#查看单个变量值
env $HOME
#查看所有变量 包括局部变量
set
6.2设置用户定义变量
Tips:
所有的环境变量名均使用大写字母,这是bash shell的标准惯例。如果是你自己创建的局部变量或是shell脚本,请使用小写字母。变量名区分大小写。在涉及用户定义的局部变量时坚持使用小写字母,这能够避免重新定义系统环境变量可能带来的灾难。
my_var="parrot"
exoprt my_var #导出到全局变量
子shell无法使用export改变父shell中全局环境变量的值
6.3删除环境变量
unset my_val
Tips: 在涉及环境变量名时,什么时候该使用 . 记 住 一 点 就 行 了 : 如 果 要 用 到 变 量 , 使 用 .记住一点就行了:如果要用到变量,使用 .记住一点就行了:如果要用到变量,使用;如果要操作变量,不使用$。这条规则的一个例外就是使用printenv显示某个变量的值。
6.4默认的shell环境变量
6.5设置PATH环境变量
#向PATH中添加目录
PATH=$PATH:NEW DIR
6.6定位系统环境变量
登录bash shell后,bash会在启动文件(环境文件)中查找命令。三种登录模式有不同的查找方式
登录时作为默认登录shell
作为非登录shell的交互式shell
作为运行脚本的非交互式shell
6.6.1登录shell
-
/etc/pofile
-
#HOME/.bash_profile
-
#HOME/.bashrc
-
#HOME/.bash_login
-
#HOME/.profile
其中/etc/profile是默认的bash主启动文件
Tips: 有些发行版本使用了可拆卸式认证模块PAM,在这种情况下,PAM文件会在bash启动前处理,PAM文件中可能包含环境变量 。
6.6.2交互式shell进程
如果bashshell不是登录系统时启动的(比如通过在命令行输入bash启动),这时启动的shell就称为交互式shell,交互式shell不会访问/etc/profile文件 ,只会检查用户目录的.bashrc文件
6.6.3非交互式shell
bash shell提供了BASH_ENV环境变量,shell启动非交互式shell进程时,会检查这个环境变量来查看要执行的启动文件。但有的发行版并未设置该环境变量,这时,所启动的脚本所使用的环境变量是继承于启动他的父进程的。
但也要注意,由父进程设置但是未导出的都是局部变量,子shell无法继承局部变量。
6.7数组变量
可以给环境变量设置多个值 放在括号中,使用空格分割
my_val=( one two three four five )
echo ${my_val[0]} #one
echo ${my_val[*]} # one two three four five