Linux的shell脚本有多种执行方法,不同的执行方法有不同的特点,尤其是shell是否开启子进程shell,通常情况下,shell脚本第一行为魔法字符#!/bin/bash,不同的执行方法对魔法字符的影响也不相同。现总结如下:

一.绝对路径/相对路径方式

特点:

1.    脚本需要有执行权限

2.    有魔法字符时,shell脚本作为一个独立命令,属于bash的子进程,脚本中的命令为脚本的子进程,此时shell脚本相当于系统命令。

3.    没有魔法字符时,系统会开启一个子bash进程,子bash进程会从shell脚本中读取命令执行,shell脚本自身不是进程,只是命令的集合。

实际应用中,常用编写带魔法字符的shell脚本,绝对/相对路径方式执行。

二.bash命令方式

特点:

1.    shell脚本不需要执行权限

2.    脚本第一行是不是魔法字符对结果没有影响

3.    shell会开启一个子shell,子shell把脚本当作命令参数,读取其中的命令执行。

实际中通常在需要调试脚本时用这种方法执行脚本,eg:

bash -x XXX.sh    查看脚本的执行过程

bash -n XXX.sh   检查脚本的语法错误

三.source/. 命令执行方法

特点:

1.    shell脚本不需要执行权限

2.    脚本第一行是不是魔法字符对结果没有影响

3.    shell会开启一个子shell,子shell把脚本当作命令参数,读取其中的命令执行。

总结:

1.    运行shell脚本通常用绝对/相对路径方式

2.    bash命令方式常用来shell脚本排错

3.    source/.方式常用来重新加载系统的配置文件