shell脚本环境变量

Posted zqq_hello_world

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本环境变量相关的知识,希望对你有一定的参考价值。

base shell中环境变量分为两类:全局变量、局部变量

全局环境变量

全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量只对创建他们的shell可见。

查看全部全局变量命令:env或printenv

查看个别环境变量命令:printenv [变量名称]

使用$打印变量

echo $变量名称

局部环境变量

局部变量只能在定义他们的进程中可见。

查看局部环境变量命令:set(set命令会显示出所有环境变量,包括局部变量、全局变量以及用户自定义变量)

设置环境变量

设置局部用户自定义变量

命令格式:[变量名]=[变量值]

定义变量时不允许有空格,否则空格后会被当成命令执行,如果变量值有空格可以用双引号来界定。

设置全局变量

创建全局变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。

命令格式:export [变量名]

通过bash命令开启子shell(exit命令退出),查看父shell设置的全局变量。在子shell中修改全局变量并不会更改父变量值,只在自己当生效。

删除环境变量

可以用unset命令删除环境变量。

命令格式:unset [环境变量名称]

在处理全局变量时,在子进程中删除了一个全局变量只对当前子进程有效。

设置PATH环境变量

当在shell命令行输入外部命令时,shell必须搜索系统来找到对应程序。PATH环境变量定义了用于进行命令和程序查找的目录。

查看PATH变量:echo $PATH

PATH环境变量是用冒号隔开目录信息,所以如果想更高PATH变量可以直接引用原先值增加自己要追加的目录,如:

PATH=$PATH:/home/script

将目录驾到PATH目录中,就可以在任意目录执行命令(加入PATH程序的命令)。对PATH的修改只能到退出或重启系统,如果想一直有效可以修改/etc/profile文件,/etc/profile是系统默认bash shell的主启动文件。系统上每个用户登陆时都会执行这个启动文件,可以将更改命令加入到这个文件中。

查看/etc/profile文件命令:cat -n /etc/profile

观察profile代码,发现有for循环循环/etc/profile.d文件夹目录并执行里面可读文件,所以也可以将修改环境变量脚本(.sh脚本)加入到这个目录下也会生效(推荐这种方法,比加到/etc/profile文件中好,因为有些操作会更新/etc/profile文件,比如升级所用的发型版本)。

数组变量

环境变量可以作为数组使用,可以存多个变量,这些值可以单独引用,也可以作为数组引用。

定义数组变量格式:[变量名]=(var1 var2 var3 var4),数组元素用空格隔开。

定义数组变量:array=(zqq zqq1 zqq2 zqq3)

输出数组变量默认输出第一个:echo $array

输出数组固定元素:echo $array[1]

输出数组全部元素:echo $array[*]

修改索引位置的值:array[1]=zqq11

删除索引位置的值:unset array[1]

删除数组变量:unset array

以上是关于shell脚本环境变量的主要内容,如果未能解决你的问题,请参考以下文章

Bash基础——Shell脚本内部常用环境变量

shell脚本编程

shell脚本ansible执行不成功

Shell脚本笔记Shell变量

shell 脚本语言学习

shell脚本中的全局环境变量