博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本中source和sh的区别
阅读量:4480 次
发布时间:2019-06-08

本文共 985 字,大约阅读时间需要 3 分钟。

source script.sh 在当前环境下执行, 所有的变量即使脚本运行结束也会被保留下来(无需显示的声明),也可以使用当前bash中定义的变量.

在当前shell下定义一个变量

$var1='var1 defined in shell'

在脚本中输出上面定义的变量, 然后再定义一个新的变量

$ cat << EOF > script.sh> echo \$var1> var2="VAR var2 defined in the script.sh"> EOF$ echo $var1var2='VAR var2 defined in the script.sh'$source script.shvar1 defined in shell

脚本执行完以后再输出var2, 可以看到var2已经定义, 并且输出.

$ echo $var2$ VAR var2 defined in the script.sh

sh script.sh 是在一个子进程中运行, 任何分配的变量会在脚本运行结束时释放掉. 脚本中声明的变量脚本运行结束后就不复存在.

Note: ./script2.sh 也等同于这种方式.

# 首先在当前shell中定义一个变量$ var="va1 is defined"$ cat << EOF \> script2.sh> if [ -z \${var+x} ];then>     echo "var id not set"> else>     echo "var is set to $var";> fi> var2="var2 defined in script.sh"> EOF$ chmod +x script2.sh [centos@localhost ~]$ sh script2.sh var id not set[centos@localhost ~]$ echo $var2

输出为空, 当前shell不能使用./script2.sh中定义的变量, 脚本中也不能使用shell中定义的变量.

Note: source script.sh与. scirpt.sh等价. sh 通常是bash的软链接, 所以也是等价的.

转载于:https://www.cnblogs.com/zhuzi8849/p/7026972.html

你可能感兴趣的文章
网络流(最大独立点集):POJ 1466 Girls and Boys
查看>>
js立即执行函数
查看>>
cpio命令详解
查看>>
python学习笔记 python实现k-means聚类
查看>>
DNS & CDN & HTTPDNS 原理简析
查看>>
RS485连接CAN——应急用法【worldsing笔记】【待完善】
查看>>
新公司新项目新团队新领导
查看>>
在PADS中如何导出PCB封装库
查看>>
《设计模式之禅》学习笔记(十)
查看>>
160. Intersection of Two Linked Lists
查看>>
深入浅出 Java Concurrency (36): 线程池 part 9 并发操作异常体系[转]
查看>>
面试内容
查看>>
最小公倍数
查看>>
大数乘大数
查看>>
C++继承与派生(原理归纳)
查看>>
PO与PR之间的关系SQL
查看>>
String、StringBuffer和StringBuilder的区别
查看>>
php实现:当未登录时转到登陆页面
查看>>
postgresql安装,java简单使用postgresql
查看>>
UIResponder学习
查看>>