我在编写一个简单的shell脚本,发现我的shell脚本不需要shebang行
#!/bin/sh
如果我授予脚本执行权限,并使用执行./myscript.sh
。运行正常。
我正在使用bash
shell,/bin/sh
实际上是指向bash
。
lrwxrwxrwx 1 root root /bin/sh -> bash
我知道shebang行用于告诉shell在您的其余脚本中使用哪个解释器。
如果我错过了perl中的shebang行,请赋予执行权限并运行./myscript.pl
,这是行不通的。
这里到底发生了什么?如果使用./
,实际上何时需要shebang行?
文件中需要shebang行,并且仅当它打算作为可执行文件运行时才行(与sh file.sh
调用相反)。脚本实际上并不需要它,而是让系统知道如何查找解释器。
编辑:很抱歉误读了问题。如果shebang行丢失或无法识别,/bin/sh
则使用。但是我更喜欢露骨的解释器。
请注意,这种行为不是通用的,IIRC,只有某些exec*
家庭功能可以做到这一点(更不用说不同的平台了),所以这是此处要明确的另一个原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句