我只是在 CentOS 6.2 上编写了一个简单的 Bash 脚本:
[root@hadoop1 ~]# vi bash_startup
#! /bin/bash
export r=1
返回命令行:并使用 ./bash_startup 运行
[root@hadoop1 ~]# echo $r
[root@hadoop1 ~]#
echo$r
没有给出结果,为什么?
答案1
仅当您以如下方式调用脚本时,对脚本中的环境变量的更改才会影响调用 shell:
. ./script.sh
或者:
source ./script.sh
不是:
bash ./script.sh
或者:
./script.sh
这是因为前两种方式在当前 shell 中运行脚本,而后两种方式启动子 shell,并且环境变量的更改不会从子 shell 向上传播。