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 系统中使用。