Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  shell  >  正文 source命令执行shell文件与shell script文件名直接运行的区别

source命令执行shell文件与shell script文件名直接运行的区别

发布时间:2014-12-09   编辑:www.jquerycn.cn
本文介绍下,在linux中,使用source命令执行shell script文件与shell script文件直接运行的区别,感兴趣的朋友可以参考学习下。

本节内容:
shell脚本的二种执行方式的区别。

在linux操作系统中,运行shell脚本的方式有很多种,假设有一个可以运行的脚本叫test.sh,可以通过source加脚本文件名,source test.sh(= . ./test.sh 两个.),也可
以通过./路径/test.sh方式运行,如果脚本在PATH路径下,还可以字节通过脚本名运行,如test.sh。

这里说下二者的区别:
 

source test.sh的方式让test.sh在当前的shell 进程中运行,不启动子shell。
./test.sh(只有一个点) 和test.sh(test.sh必须在PATH路径中)会启动子shell运行。

另外,当把一个shell脚本放在PATH中时,尤其是没有sh后缀名时,如果系统中有alias,function和这个shell脚本重名,则alias和function的优先级更高。

例如,系统中有一个alias: alias ft="echo ft is an alias"
同时还有一个function 也叫ft(){echo ft is a function}

然后,在PATH路径(比如说当前路径目录也被设为PATH)中也有一个ft脚本文件,内容为:echo ft is in a script

如果在shell里运行ft,会执行alias;
如果将alias去掉,unalias ft,会执行function;
如果想执行脚本ft,可以通过./ft。

当脚本的执行结果,为非期望的结果时,可以通过type 脚本名 查看下是否还有同名的alias或function存在,通过type -all ft 可以列出所有的ft的定义。

就是这些了,希望大家仔细体会下二者的区别,以更好地掌握与灵活运用shell脚本来解决系统运维中的问题。

您可能感兴趣的文章:
source命令执行shell文件与shell script文件名直接运行的区别
Linux Source命令解析
inux shell初级入门教程
深入解析tcsh的初始化配置文件
python shell是什么
Shell 教程
ipython和python区别
ipython好还是python好
bash shell脚本执行的几种方法
python脚本如何测试手机

[关闭]