[Shell]shell中./和source的区别(…
来源:互联网 发布:python 和 ruby比较 编辑:程序博客网 时间:2024/05/16 15:19
lu1() {
}
lu2() {
}
上面就是,run.sh的源码了,可以看到只有2个函数定义没有任何地方来调用这两个函数,那么我们如果这样执行:
luther@gliethttp:~$ ./run.sh
luther@gliethttp:~$
可以看到什么都没有,因为没有地方调用这2个函数,我们希望在我们的luther@gliethttp:~$提示符后面调用这2个函数,来试试,
luther@gliethttp:~$ lu1
bash: lu1: command not found
luther@gliethttp:~$ lu2
bash: lu2: command not found
luther@gliethttp:~$
结果都提示找不到命令,是不是我们的这个需求shell还不提供支持呢,当然不是,这样有用的需求shell早就为我们做好解决方案了,来看看怎么实现,
shell中有2个命令可以完成我们的工作,一个是source另一个就是和source等效的.逗号运算符:
luther@gliethttp:~$ . run.sh或者luther@gliethttp:~$sourcerun.sh
这样我们run.sh脚本中创建的变量和函数就添加到了执行.或source的shell,直到关闭该shell窗口,否则run.sh中创建的变量和函数将一直有效,
如果我们只是执行./run.sh启动一个subshell来运行我们的run.sh脚本,那么run.sh脚本中的变量和函数将紧紧影响到由shell启动的subshell,当./run.sh脚本退出之后,run.sh变量和函数的影响寿命也到了尽头。
来看看现在的现象:
luther@gliethttp:~$ ./run.sh
luther@gliethttp:~$ lu1
bash: lu1: command not found
luther@gliethttp:~$ lu2
bash: lu2: command not found
luther@gliethttp:~$ . run.sh
luther@gliethttp:~$ lu1
aaaaaaaaa
luther@gliethttp:~$ lu2
bbbbbbbbb
luther@gliethttp:~$
重新启动一个新shell:
luther@gliethttp:~$ ./run.sh
luther@gliethttp:~$ lu1
bash: lu1: command not found
luther@gliethttp:~$ lu2
bash: lu2: command not found
luther@gliethttp:~$ source run.sh
luther@gliethttp:~$ lu1
aaaaaaaaa
luther@gliethttp:~$ lu2
bbbbbbbbb
luther@gliethttp:~$
0 0
- [Shell]shell中./和source的区别(…
- Shell中exec、source和shell script的区别
- Shell中exec、source和shell script的区别
- linux:Shell中exec、source和shell script的区别
- linux:Shell中exec、source和shell script的区别
- shell中source和export区别
- shell中source和sh script的区别
- Linux bash shell中. & source & ./的区别
- shell中source sh exec的区别
- shell ./ 和 source 运行的区别
- shell中$@和$*的区别
- shell中“>”和“>>”的区别
- shell中exec 与fork/source的区别
- Linux shell中source与点命令的区别
- shell3 source 命令和./ 命令的区别 &shell编程:EOF
- shell中$@和$*区别
- source命令与shell scripts的区别
- shell中“source”、“.”和“bash”命令
- iOS App性能优化之启动时间、内存
- 排序
- 在android手机中打开word、xls、pd…
- UIStepper 计步器
- 2013年06月13日
- [Shell]shell中./和source的区别(…
- DLNA原理
- Android中Canvas和Paint的常用方法
- three.js 性能插件stats简单用法
- http中的User-Agent
- OpenCV中图片数据的内存管理:图像深度复制与浅复制
- M3U8的简单介绍和在Android中使用…
- Android中下载音视频文件
- Androidの通过查询电话号码或ID获取联系人头像