shell脚本中使用source和使用./cmd.sh区别
在shell脚本中,可以将函数分开到不同的脚本中,然后通过 source
指令或者 .
指令组合起来,相当于引用。
source
和.
作用相同,都是只加载引用,但是不会直接执行。
不过,要注意的是,如果要直接执行引用的脚本,则在脚本中直接使用 sh xxxx.sh
或者 ./xxxx.sh
来执行。这种方式会启动一个子进程(subshell),所以其变量值是不能直接在主调脚本中使用,所以除非不交换数据,否则不推荐使用。
参考 Source命令与./区别 提供了一个很好的案例来解释两种方式的区别:
脚本cmd.sh,其内容如下:
照以下几种方式执行,看输出结果的区别。
注意:
source命令是在当前进程中执行脚本文件中的各个命令,而不是另起 一个子进程(subshell)。
其它两种方式则是另起一个子进程。
参考
Last updated