先看一个过程
jiaming@jiaming-System-Product-Name:/tmp$ vim func.sh
jiaming@jiaming-System-Product-Name:/tmp$ cat func.sh
#============================================================================
#
# Author: jiaming - jmzhang2020@lzu.edu.cn
#
# blog : jiaming.blog.csdn.net
#
# Last modified: 2020-12-03 17:08
#
# Filename: func.sh
#
# Description:
#
#=============================================================================
function func {
echo "This is func."
}
func
jiaming@jiaming-System-Product-Name:/tmp$ source func.sh
This is func.
jiaming@jiaming-System-Product-Name:/tmp$ . func.sh
This is func.
jiaming@jiaming-System-Product-Name:/tmp$ sh func.sh
func.sh: 15: func.sh: function: not found
This is func.
func.sh: 17: func.sh: Syntax error: "}" unexpected
jiaming@jiaming-System-Product-Name:/tmp$ bash func.sh
This is func.
jiaming@jiaming-System-Product-Name:/tmp$ ./func.sh
bash: ./func.sh: Permission denied
jiaming@jiaming-System-Product-Name:/tmp$ sudo ./fuc.sh
[sudo] password for jiaming:
This is func.
jiaming@jiaming-System-Product-Name:/tmp$ chmod +x func.sh
jiaming@jiaming-System-Product-Name:/tmp$ ./func.sh
This is func.
这些运行脚本方式的区别是什么?
- sh/bash:打开一个子shell,xxx.sh 不需要有执行权限。
- ./:打开一个子shell,xxx.sh 需要有执行权限。
- source和.:二者相同,都会在当前shell中读取、执行xxx.sh。