《Ubuntu — export和source命令》
1.export
export是将一个变量导出,相当于局部变量导出成全局变量。
2.source
通常用法:source filepath 或 . /filepath
功能:使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。例如,当我们修改了/etc/profile文件,并想让它立刻生效,而不用重新登录,就可以使用source命令,如source /etc/profile。
source命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称。这从用法中也能看出来。
需要注意:点命令只能执行脚本或者应用程序。但是如果一个文件里面有export变量需要导出就不能使用点命令了。要使用source。
还有一种应用场景,当在一个脚本中想使用另一个脚本中的变量的时候,也只能使用source。
3.父shell和子shell的概念
父shell与子shell,从shellA中启动一个shell,称之为shellB。 shellA为父shell,shellB为子shell。
最常见的情况是在当前shell下执行脚本,这个脚本实际上是在子shell中执行的。
可以看出当前的shell的PID是2514。
执行一个测试脚本
可以发现tesh.sh的父进程是bash。
4.export和souce的作用
假如有一个脚本:
#test.sh #!/bin/sh export TEST_DIR=/home/test
直接执行./test.sh
ubuntu@test-ubuntu:~$ ./test.sh ubuntu@test-ubuntu:~$ echo $TEST_DIR ubuntu@test-ubuntu:~$
发现没有值,因为子shell中并不会影响到父shell。
但是假如变成这样
ubuntu@test-ubuntu:~$ source ./test.sh ubuntu@test-ubuntu:~$ echo $TEST_DIR /home/test
发现可以输出了.source(或点)命令通常用于重新执行刚修改的初始化文档,sh_profile和 .profile 等等.使它立即生效而不用去创建新的子shell。
export是将一个变量导出,以给其他shell程序使用,能影响子shell。
source 作用在本shell程序中执行,不启动子shell,所以可以影响脚本的父shell。
原文地址:https://www.cnblogs.com/zhuangquan/p/12932410.html
- Step By Step 一步一步写网站[1] —— 填加数据(二)
- [WCF-Discovery]让服务自动发送上/下线通知[原理篇]
- [WCF-Discovery]让服务自动发送上/下线通知[实例篇]
- [WCF权限控制]利用WCF自定义授权模式提供当前Principal[实例篇]
- [WCF权限控制]利用WCF自定义授权模式提供当前Principal[原理篇]
- [自定义服务器控件] 第一步:文本框。
- 检查两个数据库里的表名、字段是否一致的一种方法
- 如何在Python中从零开始实现随机森林
- 基类、接口的应用——表单控件:一次添加、修改一条记录,一次修改多条记录。(上)
- 使命必达: 深入剖析WCF的可靠会话[协议篇](下)
- 分页控件和几个相关控件的源代码
- Python编程中的反模式
- Python机器学习库:Scikit-Learn简介
- 很简单的企业管理器---我写程序的方式,几个自定义控件。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- IOC容器实现
- Docker安装mysql
- 【LeeCode 面试题】二叉树的前序遍历,中序遍历,后序遍历递归和迭代的两种实现方式
- MySQL笔记汇总
- 【DB笔试面试856】在Oracle中,如何判定实例是否运行?
- 【DB笔试面试857】在Oracle中,若一个主机上有多个Oracle实例,则如何确定哪些共享内存段属于想要清掉的实例的内存段?
- vue + flask实现邮件密码找回功能
- PicGo + Gitee 构建免费云图床
- python scipy.stats计算单样本假设检验(1 sample test)
- python scipy.stats计算双独立样本假设检验(2 sample independent test)
- 深入理解JS的事件循环
- C语言必背的18个经典程序。
- 打卡群刷题总结0811——从中序与后序遍历序列构造二叉树
- Docker服务开放了这个端口,服务器分分钟变肉机!
- Oracle私网mtu滚动修改实施方案