export ,source 理解shell变量的生存周期

在一个bash环境中:
本地变量声明方式 name=linux
环境变量声明方式 export name=linux
或者是 name=linux
       export name
本地变量 和 环境变量的区别是
1.本质区别:在fork产生子进程时,父进程不会将本地变量传递给子进程,而环境变量(export)会传递;但是是父进程将环境变量传递给子进程是单向传递,子进程对环境变量的修改不会在传回给父进程(因为 环境变量的信息保存在进程内存空间,子进程退出后,内存被释放);另外需要注意的是:在当前bash中,通过
sudo -s
su -
su -l user
等方式切换其他用户而启动子进程,我猜测新的bash进程会重新加载相关用户的.bashrc .profile等配置信息,而导致父进程的环境变量被重新覆盖!!!
2.环境变量(export)会记录在env,export命令的结果中,而本地变量则不会,所有的当前bash的变量(包括本地变量)都可以使用set命令和declare命令得到(这四个命令都不加参数的情况下)
------------------------------------------
如题,关于shell环境和变量生存期,有以下结论:

1、执行脚本时,脚本中的语句是在一个子shell环境中运行的,脚本执行完后该子shell自动退出;
2、一个shell中的系统环境变量才会被复制到子shell中(用export定义的变量);
3、一个 shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中);
3、不用 export定义的变量只对该shell有效,对子shell也是无效的。
4、用source执行一个脚本,相当于在当前Shell环境下执行该脚本中的语句,并没有父子的关系。
(使用source执行shell脚本不会启动新的进程,而是在当前shell进程执行)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值