linux下的export和source命令

1、export命令

参考
语法:export [-fnp] [变量名称]=[变量设置值]

  1. 在shell中执行程序时,export用于新增、修改或删除环境变量
  2. 一般在shell中运行脚本程序时,系统会创建一个shell(子shell),source除外(下面有解释),在子shell中定义的变量只在子shell中有效。(类比局部变量只在子程序(函数)中有效,在主程序中不可调用),子shell可以用父shell中的环境变量。
  3. 设置环境变量。echo $变量名(如echo $PATH)可以查看环境变量。若执行的程序在环境变量PATH中,直接输入程序名就可以,如果不在,则找不到该命令,需要完整路径表示命令位置。此时,可以添加该目录到环境变量。PATH=$PATH:路径,若想永久有效,添加到~/.bashrc中:(形如)export PATH="$PATH:/opt/.../.../bin
  4. 只有环境变量(export的)才会传递到子shell中,对本shell和子shell有效(父shell无效);一般变量对子shell也是无效的,只在本shell有效。

2、source命令

1、source命令

source ~/.../../file

source命令作用:现在立刻马上在当前shell中按顺序执行file中的脚本。通常用于重新执行刚修改完的初始化文档。
如在linux中修改了./bashrc启动初始化文件,这时可以用source命令重新执行,使得修改生效而不用注销再次登录。
与./直接执行脚本不同,./是在子shell运行的,结果并没有反映到父shell中。source是直接在本shell中运行的,不会启动一个新的shell,所以脚本中设置的变量直接成为当前shell的一部分。

2、source filesh file./file 的区别

sh file./file一样,重新建立新的shell执行脚本,子shell继承父shell的环境变量(export了才是),但是子shell新建的改变的变量不会影响父shell
source file读取file中的脚本依次在当前shell中执行,没有建立新的子shell

3、实验加深理解

三个bash脚本文件noexport.sh, export.sh, test.sh

#noexport.sh
var="test export and source"
#export.sh
var="test export and source"
export var
#test.sh
echo $var

实验1

wfq@wfq:~$ source noexport.sh   #本shell中执行noexport.sh
wfq@wfq:~$ echo $var
test export and source
wfq@wfq:~$ source test.sh 
test export and source
wfq@wfq:~$ sh test.sh  #子shell中执行,无结果

wfq@wfq:~$ 

#解释:在本shell执行noexport.sh,没有export为环境变量,所以仅在本shell中变量有效,子shell中无效

实验2

wfq@wfq:~$ sh export.sh   #在子shell执行export.sh
wfq@wfq:~$ source test.sh   #在本shell执行test.sh

wfq@wfq:~$ 

#结论解释:在子shell中的变量,尽管是export为环境变量了,在父shell仍然无效

实验3

wfq@wfq:~$ source export.sh    #在本shell执行,且export为环境变量了
wfq@wfq:~$ source test.sh      #在本shell中,环境变量肯定有效,一般变量也会有效
test export and source
wfq@wfq:~$ sh test.sh        #在子shell中,环境变量仍然有效
test export and source
wfq@wfq:~$ 

#结论解释:export的环境变量,在本shell和子shell均有效
  • 18
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值