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.shwfq@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均有效

linux下的export和source命令相关推荐

  1. 【Linux】5.linux下的export命令和环境变量

    linux下的export命令和环境变量 linux中在 profile 或者 bashrc 或者其他类似的文件中设置环境变量时(比如PATH),如果没有export,那么只能在直接启动的shell中 ...

  2. linux 更新软件命令 失败,对linux下软件(库)的更新命令详解

    在ubuntu服务器下安装包的时候,经常会用到sudo apt-get install 包名 或 sudo pip install 包名,那么两者有什么区别呢? 1.区别 pip用来安装来自PyPI( ...

  3. linux中mysql导入文件,linux下mysql导入sql文件命令

    Linux下我们提供导入sql文件可以得到数据.下面由学习啦小编为大家整理了linux下mysql导入sql文件命令的相关知识,希望对大家有帮助! linux的mysql导入sql文件命令详解 lin ...

  4. 《Linux指令从入门到精通》——4.3 Linux下全屏幕文本编辑器的命令行方式

    本节书摘来自异步社区<Linux指令从入门到精通>一书中的第4章,第4.3节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  5. Linux下常见的文本处理命令

    众所周知,在Linux下"一切皆文件"的原则,一切配置文件都可以以文本的方式进行编辑.存储.故对文本文件的操作能力,决定着你是否能够在Linux下操纵自如.今天,就写下几个关于Li ...

  6. (转载)linux下的find文件查找命令与grep文件内容查找命令

    linux下的find文件查找命令与grep文件内容查找命令 转载于和感谢:linux下的find文件查找命令与grep文件内容查找命令 目录 1.前言 1.1 find命令和grep命令的区别 2. ...

  7. linux下挂载和卸载的命令的用法:mount 、umount

    linux下挂载和卸载的命令的用法:mount .umount 将Windows C:盘(hda1)安装在Linux文件系统的/winsys目录下, 命令是:mount /dev/had1 /wins ...

  8. linux为什么用tar压缩,linux下tar压缩和解压命令用法详解

    linux下tar压缩和解压命令用法详解 2017-03-25 14:06 分享人:老牛 将/usr/local/test目录下所有文件仅打包,不压缩到 /usr/local/auto_bak/目下 ...

  9. linux如何在a休息时运行b,Linux下如何优雅地修正命令?

    原标题:Linux下如何优雅地修正命令? 来源:公众号[编程珠玑] 作者:守望先生 ID:shouwangxiansheng 如何快速纠正你的linux命令?我们在输入命令的时候,难免会出现输入命令错 ...

最新文章

  1. 知识图谱升温之势已现,不要错失下一个AI风口
  2. 搭建网站必不可少的知识3
  3. golang 判断字符串是不是数字
  4. 【CodeForces - 580D】Kefa and Dishes (状压dp)
  5. plsq卸载 删除注册表、_win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结...
  6. xlwings 合并单元格 读取_xlwings,让excel飞起来
  7. pytorch单机多卡的正确打开方式 以及可能会遇到的问题和相应的解决方法
  8. linux: 批量修改文件夹及文件夹下文件的名字
  9. C++的继承知识点重温
  10. [源码和文档分享]基于C++的一元多项式的计算
  11. Windows10中“SQL Server 配置管理器”哪去了?
  12. 区块链学习路线图 初阶+中阶+高阶
  13. .Net中常用的几种ActionResult
  14. DSP2812 RAM不够用的解决方法【转载】
  15. C++继承详解(三):抽象类和纯虚函数、多重继承与虚基类的底层实现原理详解
  16. 某医院门诊预约系统/医院预约挂号系统
  17. iphone计算机设置,苹果手机怎么设置其他铃声
  18. SpringBoot系列之(三):启动过程
  19. 关于调用第三方sdk
  20. 新华社 | 郭为:IT构架创新助力中国金融科技创新之路

热门文章

  1. elemenet ui中表格表头换行
  2. Excel表格数据丢失如何快速恢复?
  3. Java、对二维数组排序
  4. mysql外键检查的作用_MySQL外键使用及说明详解
  5. 电销机器人源码厂家哪家好
  6. 基于时序特征处理与LSTM结合的雅虎美股数据预测
  7. notepad++ linux安装
  8. python 日期加减法_python timedelta减法行为
  9. 简述Spring Bean生命周期
  10. 抖音视频内容如何被快速推荐的几种方法:国仁楠哥