我们在执行 bash 脚本的时候,有不同的方式,例如下方的四种方式。
- source 或 .
- 使用 source 方式运行 script 时, 就是让 script 在当前 process 内执行, 而不是产生一个 child process 来执行,由于所有执行结果均于当前 process 内完成,若 script 的环境有所改变, 当然也会改变当前 process 环境了,在当前 shell 内去读取、执行 a.sh,而 a.sh 不需要有"执行权限"。
- sh
- bash
- 使用 sh/bash 方式运行 script 时,都是打开一个 subshell 去读取、执行 a.sh,而 a.sh 不需要有"执行权限",通常在 subshell 里运行的脚本里设置变量,不会影响到父 shell 的。
- ./
- 使用 ./ 方式运行 script 时,打开一个 subshell 去读取、执行 a.sh,但 a.sh 需要有"执行权限",可以用 chmod +x 添加执行权限,使用 ./ 来执行的文件里有 alias 语句,shell 并不会把 alias 别名扩展成对应的命令。