之间的差异/script.sh和sh script.sh

  • 本文关键字:sh script 之间 bash shell
  • 更新时间 :
  • 英文 :


我使用无效权限-rw-r-r-1编写了脚本。如果我运行这个sh script.sh,它会被执行,同时用执行/脚本抛出权限被拒绝。

这两个命令之间有什么区别?为什么不需要更改"sh script.sh"的权限?

[root@ipsafe]#sh test.sh

测试

[root@ip安全]#/test.sh

-bash:/test.sh:权限被拒绝

这两个命令之间有什么区别?

sh script.sh告诉sh程序运行脚本。

./script.sh表示使用脚本定义的程序运行脚本,该程序在开始时带有hashbang(如果不是hashbang,则在默认shell中(。

请注意,根据脚本是否有hashbang,最终可能会得到完全不同的结果,原因有两个:

  • 即使shbash,当它被调用为sh时,它也会在有限的兼容性模式下运行(感谢Charles Duffy在问题评论中指出这一点(。

  • 脚本可能使用与shell完全不同的东西运行。它可能以#!/bin/node开始,并包含要在Node.js中运行的JavaScript代码。在这种情况下,./script.sh会工作,但sh script.sh会失败,因为sh会将脚本视为shell脚本。

为什么不需要更改"sh script.sh"的权限?

因为在这种情况下,您正在执行的是sh程序,该程序被标记为可执行(然后是sh读取并执行脚本中的命令,但脚本不必是可执行的(。当您执行./script.sh时,您将其视为可执行文件,因此它需要设置可执行权限位。

相关内容

  • 没有找到相关文章

最新更新