我用耳聋权限编写脚本-rw-r--r- 1。如果我运行这个sh script.sh,它就会被执行,而用./script执行命令时,它会抛出拒绝的权限。
这两个命令之间有什么区别?为什么不需要更改“sh script.sh”的权限?
根@ip safe# sh test.sh
测试
root@ip safe# ./test.sh
-bash:./test.sh:权限被拒绝
发布于 2022-03-19 15:13:27
这两个命令之间有什么区别?
sh script.sh告诉sh程序运行脚本。
./script.sh说要使用脚本定义的程序运行脚本(如果不是hashbang,则在默认的shell中)。
请注意,由于以下几个原因,您很可能会得到完全不同的结果,这取决于脚本是否有散列:
sh是bash时,当它作为sh被调用时,它在有限的兼容性模式下运行(感谢Charles Duffy在关于这个问题的评论中给出了pointing that out )。#!/bin/node开始,并包含要在Node.js中运行的JavaScript代码。在这种情况下,./script.sh将工作,但sh script.sh将失败,因为sh将把脚本视为shell脚本。为什么不需要更改“sh script.sh”的权限?
因为在这种情况下,您要执行的是sh程序,它被标记为可执行文件(是sh,然后读取并执行脚本中的命令,但是脚本不必是可执行的)。当您执行./script.sh时,您将其视为可执行文件,因此需要设置可执行权限位。
https://stackoverflow.com/questions/71539327
复制相似问题