Linux环境变量

By | 2021年12月31日

1 export

1.1 shell与export关系

登录Linux后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行 shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一 个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来 说,用户可以有许多 shell,每个shell都是由某个shell(称为父shell)派生的。
在子 shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内 的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。 export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。

1.2 列出所有环境变量

export -p

1.3 例子

本例,bash脚本依次调用顺序为:a.sh -> b.sh -> c.sh。

# ==================== a.sh ====================
#!/bin/bash

FALSEC_MAVEN_SERVER=http://192.168.1.166:8081

DOCKER_REPO_URL=192.168.1.166:8083
export DOCKER_REPO_URL

./b.sh


# ==================== b.sh ====================
#!/bin/bash

echo '[b shell] DOCKER_REPO_URL:' $DOCKER_REPO_URL
echo '[b shell] FALSEC_MAVEN_SERVER:' $FALSEC_MAVEN_SERVER

./c.sh


# ==================== b.sh ====================
#!/bin/bash

echo '[c shell] DOCKER_REPO_URL:' $DOCKER_REPO_URL
echo '[c shell] FALSEC_MAVEN_SERVER:' $FALSEC_MAVEN_SERVER


# ==================== 结果 =====================
[admin@localhost images]$ ./a.sh
[b shell] DOCKER_REPO_URL: 192.168.1.166:8083
[b shell] FALSEC_MAVEN_SERVER:
[c shell] DOCKER_REPO_URL: 192.168.1.166:8083
[c shell] FALSEC_MAVEN_SERVER:

1.4 结论

  • 要想将变量传递到子shell,必须用 export。
  • shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失 (并不能返回到父shell中)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注