文档章节

Linux SHELL之source与.的区别

rgds
 rgds
发布于 2015/09/10 15:47
字数 294
阅读 90
收藏 7

一、使用'.'执行

1. 文件内容:

a.sh

#!/bin/sh

a=2

echo a=$a

b.sh

#!/bin/sh

. ./a.sh

echo a.sh: a=$a
2. 添加可执行权限
# chmod +x a.sh b.sh
3. 运行
# ./b.sh 
a=2
a.sh: a=

可以看出b.sh中的a并没有获取a.sh中的a变量,只是将a.sh给执行了一遍

二、使用source执行

1. 文件内容:

a.sh

#!/bin/sh

a=2

echo a=$a

b.sh

#!/bin/sh

source ./a.sh

echo a.sh: a=$a
2. 添加可执行权限
# chmod +x a.sh b.sh
3. 运行
# ./b.sh 
a=2
a.sh: a=2

可见b.sh中获取到了a.sh中的a变量

三、结论

其实'.'只是将shell脚本执行了一遍,而source是将shell脚本中的代码添加到当前脚本中,类似与c语言中的include。

我们用bash -x看下执行详细的信息

1) '.'的方式

# sh -x b.sh 
+ ./a.sh
a=2
+ echo a.sh: a=
a.sh: a=

2) source的方式

# sh -x b.sh 
+ source ./a.sh
++ a=2
++ echo a=2
a=2
+ echo a.sh: a=2
a.sh: a=2

可以看出'.'的方式只是执行了a.sh并输出了a.sh的结果a=2; 而source的方式是将a.sh的代码添加到b.sh中然后执行。


© 著作权归作者所有

rgds
粉丝 33
博文 48
码字总数 38203
作品 0
朝阳
数据库管理员
私信 提问
Linux 环境变量和source命令

可能是班门弄斧了,仅share给尚不知道的童鞋。 1. 问题的来源: 为什么我们编译Android代码时,需要输入: source ./build/envsetup.sh 或者 . ./build/envsetup.sh哪? (这里的source和.的...

eastwake
2013/03/16
2.4K
0
Linux source命令用法详解

Linux source命令: 通常用法:source filepath 或 . filepath 功能:使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即...

qq_39521554
2018/05/25
0
0
linux下shell脚本执行方法及exec和source命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。 bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统...

OscerSong
2013/03/09
1K
0
linux shell中fork、source、exec的区别

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。 bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统...

zrer90
2018/07/01
0
0
Ubuntn中用户配置脚本加载

Linux系统中在用户的$HOME目录下可以建立独立的用户开发环境配置脚本,并在用户登录系统时自动加载执行完毕。最近一直是在Ubuntn 12.10服务器上工作,在$HOME目录下建立了一个自己的.bashrc...

水海云
2013/07/09
108
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中选举Leader时的网络IO QuorumCnxManager解析

每台服务启动过程中,会启动一个QuorumCnxManager,负责各台服务器之间底层Leader选举过程中的网络通信 当集群中有服务器服务中断时,zk会重新选举leader 内部类 Message定义消息结构 包含了...

writeademo
10分钟前
2
0
使用mdBook 替代 gitbook。

###** 为什么要替代gitbook** gitbook 有个模板问题:如果md文件中有连续的大括号(比如:&{{父亲 40}}),gitbook会把{{ 父亲 40 }}中的父亲 40当做一个模板变量。如果这个变量不存在,会报...

王坤charlie
12分钟前
2
0
TL-A7HSAD采集卡硬件的处理器、NOR FLASH、DDR3

TL-A7HSAD是一款由广州创龙基于Xilinx Artix-7系列FPGA自主研发的高速数据采集卡,可配套广州创龙TMS320C6655、TMS320C6657、TMS320C6678开发板使用。该采集卡包含1个双通道250MSPS*12Bit的高...

Tronlong创龙
24分钟前
2
0
项目启动报fastjson版本可能过低

进行项目启动的过程中,之前都正常,这次启动突然就失败了: 查看日志说的是版本过低,后来查看官方网站版本,替换了最新版本: 选择了最新版本的1.2.60,1.2.62尝试后都不行,后来查看网上搜...

aiChuang
25分钟前
2
0
McDonald’s is using Alexa and Google to accepting job applications

McDonald’s today announced a new initiative the fast food chain is calling the “Apply Thru,” in which owners of Amazon Alexa or Google Assistant devices can begin job applic......

wowloop
28分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部