This question already has answers here:
Bash script execution with and without shebang in Linux and BSD
(2个答案)
6年前关闭。
我在编写一个简单的shell脚本,发现我的shell脚本不需要shebang行
如果我授予脚本执行权限,并使用
我正在使用
我知道shebang行用于告诉shell在您的其余脚本中使用哪个解释器。
如果我错过了perl中的shebang行,请赋予执行权限并运行
这里到底发生了什么?如果我使用
(2个答案)
6年前关闭。
我在编写一个简单的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*
系列功能可以做到这一点(更不用说不同的平台了),因此这是此处要明确的另一个原因。
关于linux - Shell脚本工作正常而没有shebang行?为什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12296308/
10-09 20:55