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

相关推荐
云动雨颤10 分钟前
WordPress安全加速:Cloudflare + Nginx缓存优化方案
服务器·wordpress
m0_5587901418 分钟前
GPU算力平台评测
服务器·人工智能·python·深度学习·神经网络·目标检测·机器学习
图扑可视化30 分钟前
3D 管道如何实现流动的?
运维·数字孪生·三维可视化·管道·3d管道
爱掉发的小李44 分钟前
Linux 环境下 Docker 安装与简单使用指南
java·linux·运维·c++·python·docker·php
༺๑Tobias๑༻1 小时前
Linux下Redis常用命令
linux·前端·redis
SomeOtherTime1 小时前
操作系统数据格式相关(AI回答)
服务器·windows·microsoft
求知若渴,虚心若愚。1 小时前
ansible.cfg 配置文件生成
java·服务器·ansible
我命由我123452 小时前
Windows 操作系统 - Windows 设置始终使用 Windows 照片查看器打开图片
运维·windows·经验分享·笔记·学习·操作系统·运维开发
乌萨奇也要立志学C++3 小时前
【Linux】linux基础开发工具(三) 版本控制器Git、调试器 - gdb/cgdb使用、一些实用的调试技巧
linux·git·elasticsearch
Ronin3053 小时前
【Linux系统】进程间通信:匿名管道
linux