Bash shell 环境变量

简介

所谓Bash Shell的环境变量,指的就是Bash Shell存储的一些有关shell回话和工作环境的信息,它允许你在内存中储存数据,方便在脚本或者程序中访问这些信息。在Bash Shell环境变量中,分为全局变量局部变量

  • 全局变量:shell会话和所有子shell会话都可见的环境变量;
  • 局部变量:仅对创建该环境变量的shell会话可见。

主要几个操作

环境变量主要用到设置、查看和删除这3中操作。

设置环境变量直接直接使用变量名=值就完成了设置,注意不能够有空格,例如:

1
2
var=test1  # 设置var环境变量,值为test1
name="this is test" # 注意等号两边不能有空格,值有空格需要用双引号包住

设置全局环境变量,需要用export命令,例如:

1
export name  # 名为name的环境变量导出为全局环境变量

查看环境变量有printenvecho命令,其中printenv命令只能查看全局环境变量,例如(注意printenv后直接接变量名,而echo则需要在变量名前面加$符号):

1
2
3
4
5
6
printenv HOME
ehco $HOME
printenv name
echo $name
printenv var # 这句将没有打印内容
echo $var

单独使用printenv会打印全部全局变量。

如果要删除某个环境变量,则需要使用unset命令,但这个命令在删除全局变量时需要注意,在子shell中删除的全局变量在父shell中不起效,例如:

1
unset var  # 删除var环境变量

系统加载

当你启动系统登录时,系统会启动一个登录shell,登录shell会从以下几个文件中读取并执行命令:

  • /etc/profile
  • $HOME/.bash_profile
  • $HOME/.bashrc
  • $HOME/.bash_login
  • $HOME/.profile

其中/etc/profile是系统上默认的启动脚本文件,系统中每个用户登录的时候都会执行该脚本。后面的4个文件则会根据登录的用户相关设置进行执行。

上面说的是系统登录的时候启动的登录shell,系统登录后启动一个交互shell的时候,它不会再访问/etc/profile文件了,而是会查找用户HOME目录下的.bashrc文件并执行,通常可以在该命令设置用户自定义相关的内容。

实际上/etc/profile或者.bashrc两个文件还得看具体的Linux发行版,一些发行版可能以其他的命令,默认情况在这两个脚本中实际执行了什么动作,可以查看响应脚本的内容,例如,在/etc/profile中就有一段是扫描并执行/etc/profile.d中的.sh文件执行,因此可以添加用户自定义的*.sh脚本都该目录,实现登录时执行一些特定的命令。另外直接修改/etc/profile的话,修改的内容在系统更新的时候将会丢失,因此也不推荐直接修改改文件。

进阶相关

上面所说的是环境变量的基本情况,有几个命令跟环境变量的操作也十分密切,分别是:setenvdeclare。具体使用可以跳转到超链接相关页面查看,上面仅仅简单说明使用选项和举了简单的例子,可以在实际用到的时候测试用法并使用。

0%