【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 也是可行的.

相关推荐
Liang_GaRy19 分钟前
心路历程-Linux的特殊权限
linux·运维·服务器
monster_风铃20 分钟前
BFD原理与配置
服务器·网络·tcp/ip·信息安全管理与评估
0wioiw024 分钟前
Docker(⑤Kali Linux-HexStrike AI安装)
linux·服务器
wifi chicken26 分钟前
Linux Netfilter 之 如何完成一个自制的防火墙实例
linux·kernel·tcpip·netfiler
非凡ghost29 分钟前
AOMEI Partition Assistant磁盘分区工具:磁盘管理的得力助手
linux·运维·前端·数据库·学习·生活·软件需求
山君爱摸鱼30 分钟前
Linux网络配置
linux·运维
寒士obj33 分钟前
Docker的使用及核心命令
运维·docker·容器
喜欢你,还有大家37 分钟前
Nginx服务——安装与搭建
java·服务器·nginx
Galeoto43 分钟前
how to setup k3s on an offline ubuntu
linux·运维·ubuntu
二进制coder1 小时前
深入解析 AST2600 H2B 接口:架构、原理与完整开发指南
linux·架构