【Linux】执行脚本的两种方法,sh xx.sh和直接./xx.sh的区别

这里写自定义目录标题

      • 背景:
      • [1. 使用 sh /home/test.sh](#1. 使用 sh /home/test.sh)
      • [2. 使用 /home/test.sh](#2. 使用 /home/test.sh)
      • 总结

背景:

我有个test.sh在/home/目录里

1. 使用 sh /home/test.sh

这种方式是显式地使用 sh 命令(Shell)来运行脚本。

这意味着脚本将在 sh 环境中执行,不论脚本第一行的 shebang (#!) 指定的是什么。

如果脚本是为 bash(Bourne Again SHell)或其他 shell 编写的,使用 sh 来执行可能会因为不支持某些特性而导致问题。

在某些系统中,sh 可能是 bash 的符号链接,但它通常会以一种兼容模式运行,可能不支持某些 bash 特有的特性。

2. 使用 /home/test.sh

在这种方式中,直接运行脚本文件本身。

这将根据脚本第一行的 shebang 指定的解释器来执行。例如,如果脚本以 #!/bin/bash 开头,它将使用 bash 来执行。

这种方式确保脚本在预期的 shell 环境中执行,使用了正确的解释器。

为了使用这种方式,脚本必须具有执行权限(例如,通过运行 chmod +x /home/test.sh 来设置)。

总结

如果确切知道脚本是为哪个 shell 编写的,并且希望在该特定 shell 中运行,则直接运行 /home/test.sh 是更好的选择。如果只是想确保脚本在任何标准 shell 中运行,使用 sh /home/test.sh 也是可行的.

相关推荐
007php0072 小时前
linux服务器上CentOS的yum和Ubuntu包管理工具apt区别与使用实战
linux·运维·服务器·ubuntu·centos·php·ai编程
人类群星闪耀时2 小时前
深度学习在灾难恢复中的作用:智能运维的新时代
运维·人工智能·深度学习
djykkkkkk2 小时前
ubuntu编译遇到的问题
linux·运维·ubuntu
LinkTime_Cloud3 小时前
GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily
大数据·运维·gitlab
qq_429856573 小时前
linux 查看服务是否开机自启动
linux·运维·服务器
就爱学编程3 小时前
重生之我在异世界学编程之C语言:数据在内存中的存储篇(下)
java·服务器·c语言
Smile丶凉轩3 小时前
Docker核心技术和实现原理
运维·docker·容器
清风细雨_林木木3 小时前
Docker使用——国内Docker的安装办法
运维·docker·容器
运维&陈同学4 小时前
【Kibana01】企业级日志分析系统ELK之Kibana的安装与介绍
运维·后端·elk·elasticsearch·云原生·自动化·kibana·日志收集
7yewh4 小时前
Linux驱动开发 IIC I2C驱动 编写APP访问EEPROM AT24C02
linux·arm开发·驱动开发·嵌入式硬件·嵌入式