当前位置: 首页 > 面试题库 >

Shell脚本在没有shebang行的情况下工作正常吗?为什么?

白通
2023-03-14
问题内容

我在编写一个简单的shell脚本,发现我的shell脚本不需要shebang行

#!/bin/sh

如果我授予脚本执行权限,并使用执行./myscript.sh。运行正常。

我正在使用bashshell,/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*家庭功能可以做到这一点(更不用说不同的平台了),因此这是在此明确的另一个原因。



 类似资料:
  • 主要问题: 我试图在网页上打印错误,如果连接到MySQL服务器不做。为此,我写了一个错误的库名

  • 拉斯宾(杰西)-root@RaspberryPi-腻子 在我输入的终端中 现在我得到了一个包含此代码的脚本 有一个cronjob每小时启动一次这个脚本 苏。一定有什么地方出错了。因为他将变量$finalanswer解读为nothing。 这意味着在此脚本之外定义的变量将不起作用? 我该如何解决这个问题?

  • 本文向大家介绍Shell脚本监控网站页面正常打开情况,包括了Shell脚本监控网站页面正常打开情况的使用技巧和注意事项,需要的朋友参考一下 现在单位为了省钱,我用了shell脚本,简单的写了一个监控。通过curl一个固定页面的200状态码,如果是200,就说网站是正常的,如果不是200就自动重启网站,然后发邮件到QQ邮箱。自己在上QQ的同时,通过微信也可以收到报警,不但可以收到报警,还可以解决问题

  • 问题内容: 我有一个python脚本,我们将其命名为script1.py。我可以这样在终端中运行它: 但我想像命令行程序一样运行: 我该怎么做 ? 问题答案: 您可以在脚本的开头使用shebang行: 使文件可执行: 并将其放在PATH的目录中(可以是符号链接):

  • 问题内容: 当我的程序运行引发异常的行时,是否可以启动IPython Shell或提示? 我对引发异常的上下文,变量,作用域(和子作用域)最感兴趣。类似于Visual Studio的调试,当引发异常但未被任何人捕获时,Visual Studio将停止并为我提供调用堆栈和每个级别存在的变量。 您是否认为有办法使用IPython获得类似的东西? 编辑:启动IPython时,该选项似乎并没有达到我想要的

  • 文档说这个库运行在GPU上。如果我功能强大的笔记本电脑没有GPU,我还能运行Deeplearning4J吗?