您现在的位置是:首页 > 正文

linux下的export和source命令

2024-02-01 04:59:05阅读 2

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均有效

网站文章

  • 计算机导论与计算机组成原理关系,计算机组成原理

    一 、课程简介课程中文名称:《计算机组成原理与汇编语言》课程英文名称:Computer principle and assembly language课程编号:ZYB08003课程性质:专业必修课学时...

    2024-02-01 04:58:57
  • 什么是分布式事务?

    什么是分布式事务?

    目录什么是事务什么是分布式事务分布式事务使用场景什么是事务我们先来回顾下什么是事务https://blog.csdn.net/Delicious_Life/article/details/105466...

    2024-02-01 04:58:53
  • html字体大小有最小值

    今天写代码的时候发现font-size 属性中字体大小有一个最小值 12px,在谷歌浏览器中一直调又是一个小发现。

    2024-02-01 04:58:25
  • mysql 题1

    (1)查询计算机系学生的修课情况,要求列出学生的名字、所修课的课 程号和成绩。 select SNAME,cno from sc ,student where dept = '计算机系&#39...

    2024-02-01 04:58:19
  • java基础(十九)非标准json字符串转json对象的处理

    需求事件: 前端要使用vue进行文件的上传,但是由于前端框架的封装原因,只能通过url编码进行上传文件中的附带参数的传递,因此有了今天的处理过程。 并且前端由于业务原因,添加了一些不属于后端vo对象的...

    2024-02-01 04:58:11
  • 惠普服务器cpu芯片,惠普、戴尔推出ARM服务器_Intel服务器CPU_服务器产业-中关村在线...

    惠普服务器cpu芯片,惠普、戴尔推出ARM服务器_Intel服务器CPU_服务器产业-中关村在线...

    惠普、戴尔推ARM服务器对英特尔是致命打击?10月31日,惠普和戴尔这两个英特尔无论在消费领域还是服务器领域的长期盟友也选择了“背叛”。在2013ARMTechCon会议上公布了推出ARM服务器的计划...

    2024-02-01 04:58:04
  • localStorage使用总结,页面跳转,保存值

    例子 <ul id="edit" contenteditable="true"> <li>修改我吧,然后刷新页面看看,^_^</l...

    2024-02-01 04:57:34
  • day3 -- select语句学习

    day3 -- select语句学习

    AND / OR操作符可以任意次数的组合但是 AND的计算次序优先级更高 <== 结合序问题 <== 使用圆括号括起来解决。SQL语句是由简单的英语单词构成的。这些单词称为关键字,每个SQL语句...

    2024-02-01 04:57:27
  • 最详细STM32,cubeMX 按键点亮 led 最新发布

    最详细STM32,cubeMX 按键点亮 led 最新发布

    实验开发板:STM32F103C8T6。所需软件:keil5 , cubeMX。实验目的:了解 按键 点亮 led 原理,cubeMX配置 等。下一篇文章继续为大家介绍 STM32 的相关知识。

    2024-02-01 04:57:19
  • 锂电快充方案:TypeC-PD/QC诱骗芯片的常用型号,升降压(充电)芯片选型

    TypeC-PD 是未来消费电子的大势所趋,它可以仅用一根TypeC线缆,来输送 3.0V~21V 可调的电源,最大功率可达100W(USB-PD4.0貌似也要出来了,电压翻番,功率翻倍)。并且不影响...

    2024-02-01 04:56:51