脚本编程大全: 6 使用Linux环境变量

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
  1. /etc/pofile

  2. #HOME/.bash_profile

  3. #HOME/.bashrc

  4. #HOME/.bash_login

  5. #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

猜你喜欢

转载自blog.csdn.net/Big_Study_Father/article/details/89208757