我写了一个简单的shell脚本,发现我的shell脚本不需要shebang line
#!/bin/sh
Run Code Online (Sandbox Code Playgroud)
如果我给我的脚本执行权限并执行使用./myscript.sh.它运行正常.
我正在使用bashshell,/bin/sh实际上是指向bash.
lrwxrwxrwx 1 root root /bin/sh -> bash
Run Code Online (Sandbox Code Playgroud)
我知道shebang line用于告诉shell哪个解释器用于你的其余脚本.
如果我想念perl中的shebang行,给予执行权限并运行./myscript.pl,它不起作用.
这里到底发生了什么?如果我使用./,什么时候需要shebang线呢?
我在CentOS下写了一个bash脚本,执行得很好.在另一台电脑上,这是错误的.我刚开始忘记了shebang,但为什么我的电脑好呢?我认为这是一个非常初学的问题,但我试了一下.谢谢.
更新:弹出另一个问题.使用./filename.sh和sh filename.sh执行有什么区别?
在Linux中,我们通常在脚本中添加一个shebang来调用相应的解释器.我尝试了以下示例.
我编写了一个没有shebang并具有可执行权限的shell脚本.我能够使用./来执行它.但如果我写一个类似的python程序,没有shebang,我无法执行它.
为什么会这样?据我所知,shebang需要找到翻译.那么shell脚本是如何工作的,而不是python脚本呢?