export命令用于将变量导出到子进程。
这是什么意思?
假设你有一个这样定义的变量TEST:
TEST="test"
你可以打印它的值使用echo $TEST:
但如果你尝试定义一个Bash脚本script.sh,将上面的命令写入该文件:
然后设置chmod u+x script.sh然后用./script执行这个脚本。echo $TEST行不会打印任何东西!
这是因为在Bash中,测试变量是在shell本地定义的。当执行一个shell脚本或另一个命令时,启动一个子shell来执行它,它不包含当前的shell本地变量。
要使这里的变量可用,我们需要定义TEST,下面的代码是错误的:
TEST="test"
我们应该这样定义:
export TEST="test"
尝试一下,运行./script.sh,现在应该会打印“test”:
有时需要向变量添加一些内容。这通常是通过PATH变量完成的。你可以使用下面语法:
export PATH=$PATH:/new/path
当您以这种方式创建新变量时,通常会使用导出,但是当您使用Bash在.bash_profile或.bashrc配置文件中创建变量,或者在.zshenv中使用Zsh创建变量时,也会使用导出。
要删除一个变量,使用-n选项:
export -n TEST
不使用任何选项调用export将列出所有导出的变量。