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/.方式常用来重新加载系统的配置文件