不同的脚本执行方式
在 Unix 和类 Unix 系统中,执行脚本的方式主要有以下几种,每种方式都有其特定的用途和行为差异:
1.使用 bash 脚本
命令:
- 这种方式是通过直接调用 bash
程序来执行脚本。
- 这意味着脚本将在 Bash shell 环境中运行,无论脚本的首行(shebang,如 #!/bin/sh
)指定的是什么 shell。
- 这是在确信脚本需要 Bash 功能时使用的方法。
2.使用 sh 脚本
命令:
- 使用 sh
命令执行脚本会在 sh
(Bourne shell)环境中运行该脚本。
- sh
通常是系统的默认 shell,可能是 Bash、Dash 等 shell 的一个链接或兼容模式。
- 如果脚本是为 Bourne shell(或兼容 shell)编写的,使用 sh
执行它更合适。
3.使用 ./脚本
命令:
- 使用 ./脚本
命令执行脚本时,必须为脚本文件设置执行权限(例如,使用 chmod +x 脚本
命令)。
- 这种方式将根据脚本首行的 shebang 行(如 #!/bin/bash
)来确定使用哪个 shell 执行脚本。
- 这是最常用的执行脚本方式,因为它遵循脚本作者指定的 shell 环境。
4.使用 . 脚本
或 source 脚本
命令:
- 使用 .
(也称为点命令)或 source
命令执行脚本会在当前 shell 环境中运行脚本,而不是启动一个新的 shell。
- 这意味着脚本中所有的变量和函数将在当前 shell 中有效,对当前环境有直接影响。
- 这种方式常用于配置文件(如 .bashrc
或 .profile
),这些文件设置环境变量或定义函数。
总结一下,这四种方式的主要区别在于执行脚本时所使用的 shell 环境和脚本对当前 shell 环境的影响程度。选择哪种方式取决于脚本的内容和你想要如何影响当前的 shell 环境。
source和.不改变当前进程号,./和sh改变当前进程号
source和.执行完脚本,脚本中变量能打印出来,./和sh执行完脚本,脚本变量打印不出来