总结
export
修饰的变量在当前进程及其子进程中有效 source
执行过的脚本,会将脚本中定义的变量放在当前进程中
这两种有什么区别呢? export B=2
,会对自己所在的 shell
进程及其子进程有效,shell
进程即 linux
窗口 A=1
,只对自己所在的shell
进程有效。
我们来看几个例子:
-
案例一
注意:需要给文件更改执行权限chmod 777 a.sh
案例二(a.sh
和b.sh
都要给可执行)
我们在客户端执行export A=2
,在a.sh
和b.sh
中都能访问到,但是在a.sh
中定义了B=3
,b.sh
中不能访问到B
的值。
- 案例三,将案例二的
a.sh
中的B
用export
修饰,再去执行a.sh
用export
修饰B
的值,可以在b.sh中输出它的值,因为./b.sh命令在a.sh中执行的,那么b.sh是a.sh的子进程,export
的值在当前进程及其子进程中有效
直接在客户端输出a.sh
中export
的B
的值,发现没有任何输出,这是因为a.sh
是当前客户端的子进程,父进程不能访问子进程中的值
使用source
将a.sh
中定义的变量导入客户端
总结
export
修饰的变量在当前进程及其子进程中有效 source
执行过的脚本,会将脚本中定义的变量放在当前进程中