这里写图片描述

这两种有什么区别呢?
export B=2 ,会对自己所在的 shell 进程及其子进程有效,shell 进程即 linux 窗口
A=1,只对自己所在的shell进程有效。
我们来看几个例子:

  • 案例一
    这里写图片描述
    注意:需要给文件更改执行权限chmod 777 a.sh
    这里写图片描述

  • 案例二(a.shb.sh都要给可执行)

    这里写图片描述
    这里写图片描述
    这里写图片描述

我们在客户端执行export A=2,在a.shb.sh中都能访问到,但是在a.sh中定义了B=3b.sh中不能访问到B的值。

  • 案例三,将案例二的a.sh中的Bexport修饰,再去执行a.sh
    这里写图片描述
    export修饰B的值,可以在b.sh中输出它的值,因为./b.sh命令在a.sh中执行的,那么b.sh是a.sh的子进程,export的值在当前进程及其子进程中有效
    这里写图片描述
    直接在客户端输出a.shexportB的值,发现没有任何输出,这是因为a.sh是当前客户端的子进程,父进程不能访问子进程中的值
    这里写图片描述
    使用sourcea.sh中定义的变量导入客户端
    这里写图片描述

总结

export修饰的变量在当前进程及其子进程中有效
source执行过的脚本,会将脚本中定义的变量放在当前进程中

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:22 天前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐