./xxx.sh ` 和 `sh xxx.sh` 的区别

项目场景:

项目场景:./xxx.sh sh xxx.sh 的区别)


首先编辑一个.sh文件
在这里插入图片描述对文件增加执行权限:
在这里插入图片描述
分别使用两种方式执行:
在这里插入图片描述
没什么疑问,都可以执行。将文件的执行权限去掉再执行,这时,问题就来了!
在这里插入图片描述
使用sh hello.sh可以运行,但是./hello.sh却不可以。可是他们两个不都是使用bash解释器来执行吗?为什么一种方式可以,另一种却不可以呢?
这里补充解释一下sh命令使用的是什么shell解释器

sh xxx.sh 使用的是shell解释器,这里的shell解释器可是bash解释器、dash解释器、z解释器等shell解释器,随便哪一个都可以,一般默认是bash默认解释器。
而使用bash xxx.sh 即使明确使用bash解释器
当你运行 sh hello.sh 命令时,它实际上不是在直接执行 hello.sh 脚本文件,而是通过调用 /bin/sh 这个解释器来解释执行脚本内容。这种方式绕过了脚本文件的执行权限检查。

多方所搜,将自己对这个问题的解释如下:

执行 sh hello.sh 时,Shell 解释器 /bin/sh 会打开 hello.sh 文件,并逐行解释执行其中的命令。因为你是通过 /bin/sh 解释器来运行脚本的,而不是直接执行脚本文件,所以并不需要 hello.sh 文件本身具有执行权限。

这种方法的好处是,即使 hello.sh 文件没有执行权限,你仍然可以通过指定一个合法的解释器路径(如 /bin/sh)来执行脚本。这种方式对于一些临时性的脚本或者不希望直接给予执行权限的脚本来说很有用。

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星星星星星星……

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值