sh, bash,source,. ,在执行脚本时有什么区别?
在Shell脚本的执行过程中,sh
, bash
, source
(或.
),它们之间的主要区别如下:
sh
:
sh script.sh
是通过系统默认的 Bourne Shell(或兼容的shell,通常是/bin/sh
指向的解释器)来执行指定的脚本。如果你的系统上/bin/sh
链接到的是bash
,那么脚本将以POSIX兼容模式运行,这意味着不支持bash特有的扩展功能。sh
执行脚本。bash
:
bash script.sh
则明确指定了使用Bash shell(/bin/bash
)来执行脚本,这样可以利用bash的所有特性和扩展。bash
执行,即使系统默认的/bin/sh
已经是bash,因为直接使用bash
可以避免POSIX兼容模式下的限制。source
或 .
:
source script.sh
或 . script.sh
都是在当前正在运行的Shell环境中执行脚本中的命令,而不是启动一个新的子Shell进程。source
命令。比如,在bash会话中加载用户个人配置文件.bashrc
或.bash_profile
时就会用到source
或.
。总结来说,sh
和 bash
主要是用于在一个新的子进程中执行脚本,而 source
或 .
则是在当前进程中执行脚本,这是在脚本执行上下文和环境持久性方面的显著区别。
在执行脚本时,sh
、bash
、source
和 .
命令有一些区别:
sh
:sh
是 Linux 和 Unix 系统中的 Shell 命令,它表示 Bourne Shell。它是 POSIX 标准中定义的 Shell,因此可以在各种操作系统中使用。sh
用于执行简单的脚本和命令行操作。在执行脚本时,它使用 sh
命令并指定脚本文件名,例如:sh script.sh
。bash
:bash
是 Bourne-again Shell 的缩写,它是 sh
的一个增强版本。bash
支持命令行编辑、变量扩展、条件语句、循环结构等高级功能。与 sh
类似,在执行脚本时,它使用 bash
命令并指定脚本文件名,例如:bash script.sh
。source
:source
命令是 bash
和 sh
中都支持的一个命令,它用于读取并执行当前目录中的脚本文件。在执行脚本时,您可以在当前目录下使用 source
命令,例如:source script.sh
。source
命令会将脚本文件的内容注入到当前 Shell 环境中,从而使脚本中的变量和函数可以在当前 Shell 会话中使用。.
:在执行脚本时,.
命令是一个简写,它表示当前目录。您可以在当前目录下使用 .
命令来执行脚本文件,例如:./script.sh
。./
表示当前目录,后面的脚本文件名表示要执行的脚本。这种表示法通常在 Linux 和 Unix 系统中使用。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。