问题标签 [shebang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
295 浏览

python - Shell脚本在两者之间更改shell

我有一个带有两个shebang 的shell 脚本,第一个告诉#!/bin/sh,几行之后另一个是#!/usr/bin/env python。

当此脚本被授予可执行权限并以 ./script.sh 运行时,该脚本工作正常,在第一部分使用 /bin/sh,在后一部分使用 python 解释器。

但是当脚本以 sh script.sh 运行时,第二个 shebang 无法识别,脚本失败。如果脚本作为 sh script.sh 显式运行,我是否可以强制更改解释器。

我需要这个的原因是因为我需要通过一个作为 sh script.sh 运行的工具来运行脚本

0 投票
2 回答
218 浏览

python - Shebang 与 doxygen 的冲突

doxygen 在带有 shebang 的 python 脚本上不能正常工作吗?

我尝试了一个带有shebang的python脚本到我公司的工具目录并运行了doxygen。它根本无法显示命名空间(函数)。

有类似经历的小伙伴请分享一下。

0 投票
10 回答
732548 浏览

linux - 为什么需要将#!/bin/bash 放在脚本文件的开头?

我以前制作过Bash脚本,而且它们#!/bin/bash在开始时都运行良好。

放进去有什么意义?情况会有所不同吗?

还有,你怎么发音#?我知道那!发音为“bang”。

怎么#!发音?

0 投票
1 回答
1920 浏览

javascript - 在 Backbone.js 中组合散列和非散列 URL

有没有办法在 Backbone.js 应用程序中组合散列非散列URL?

我设置Backbone.history.start({pushState: true})。当用户单击某个链接时,我从服务器获取 JSON 数据,更新页面,并调用Backbone.history.navigate以更改浏览器中的 URL(例如 fromexample.com/zlinsky/kampan/mf/example.com/moravskoslezsky/kampan/mf/)。
如果用户从浏览器复制 URL 并在第二个选项卡中打开,他将看到相同的页面(因此以这种方式更新的每个页面在服务器上都有相应的页面)。这正是我想要的。

但是现在我有问题...

<select>的页面上也有几个。当用户更改其中的值时,我会在页面上进行一些动态更改(无需从服务器获取 JSON,仅在客户端进行更新)。我想根据 更改 URL <select>,例如更改为example.com/moravskoslezsky/kampan/mf/#state1(因此,当有人发送此 URL 时,对方将看到与发件人处于相同状态的相同页面)。

我找不到方法,如何在 Backbone.js 中做到这一点。如果我设置pushState: trueon Backbone.historyRouter忽略哈希标签。
如果我设置pushState: false,我将无法像我在上面第一段中描述的那样设置 URL。

谢谢你的任何提示。

0 投票
2 回答
2384 浏览

cygwin - 有没有办法在 Cygwin 中为 shebang 指定一个位置?

我有一些我经常在 windows(cygwin) 和 linux 中使用的脚本,我想让这些脚本在这两种环境中都可以执行。有没有办法为我的 python 安装位置设置别名,例如这样

仍然会找到我的 python 安装,即使就 cygwin 而言,它位于/cygdrive/c/Python26/python

0 投票
1 回答
2503 浏览

python - 在 bash 中,argparse(和已弃用的 optparse)如何响应 python 程序名称后的“tab”按键?

我已经测试过optcomplete使用该optparse模块。它的例子是一个简单的文件,所以我可以让它工作。我还使用该argparse模块对其进行了测试,因为不推荐使用之前的模块。但我真的不明白 python 程序是如何以及由谁在制表机上调用的。我怀疑bashshebangline 和argparse(or optparse) 模块一起以某种方式参与。我一直在试图解决这个问题(现在要阅读源代码)。

我有一个更复杂的程序结构,其中包括处理参数的代码段的包装器。它的argparse.ArgumentParser()实例化和调用add_argument()——它们被超类到另一个中间模块以避免重复代码,以及被调用的包装器——都在一个函数内部。

我想了解此选项卡完成在 bash 和 python 之间的工作方式(或就此而言,任何其他解释器,如perl)。

注意:我对 bash 补全(我刚刚学到的)有相当了解,并且我想我理解 bash(only) 自定义补全。

注意:我已经阅读了其他类似的 SO 问题,但没有人真正回答这个问题。

编辑:是 bash 功能。
我已经了解了 python 模块如何通过读取os.environ变量 的值来了解在命令行中键入的单词

这些变量仅在制表符上具有值。我的问题是如何触发 python 模块?

0 投票
3 回答
1001 浏览

python - Python 库模块应该以#!/usr/bin/env python 开头吗?

Python 库模块应该以#!/usr/bin/envpython 开头吗?

查看 in 的第一行*.py/usr/share/pysharedPython 库存储在 Debian 中的位置)可以发现,既有以 hashbang 行开头的文件,也有不以 hashbang 行开头的文件。

是否有理由包括或省略这一行?

0 投票
2 回答
646 浏览

.htaccess - 如何设置 .htaccess 以允许在 url 中使用 shebang

我正在处理的一个项目正在使用 pushState,但由于 Internet Explorer 无法正确处理它,因此在更改 URL 时使用了 shebang。是否可以设置 .htaccess 以允许在 url 中使用 shebang 但将其删除并重定向它。到目前为止,如果我要转到http://www.mydomain.com/#!/whatever.php,它只会显示我的索引页面。但我想做的是,如果你转到http://www.mydomain.com/#!/whatever.php并将其重定向到http://www.mydomain.com/whatever.php

0 投票
1 回答
965 浏览

binaryfiles - 使用 shebang 执行二进制文件

我创建了一个简单的程序,它将目录的路径作为输入,创建该目录的存档(将其转换为单个文件),向该文件添加一个 shebang(以便可以轻松提取文件的内容) ,并将文件写入指定路径的基目录。

问题是当我双击该文件时,它不会自行解压。相反,操作系统(我使用的是 Ubuntu 11.10)尝试使用 gedit 打开它。这显然显示了shebang、随机乱码和存档文件的内容。

我使文件可执行,首先使用chmod +x; 当它仍然不起作用时,我尝试了chmod 777。但是,当我双击它时,它仍然拒绝使用 shebang 执行文件。也许这是因为它不是纯文本文件。

有趣的是,当我尝试直接从命令行执行文件时,它会读取 shebang 并正确提取存档的内容。所以我的文件格式没有问题。当您双击文件时,我不太了解操作系统会做什么,但我很想了解。

如果您仍然需要从命令行手动执行它,那么将 shebang 添加到文件肯定是没有意义的。一个优势可能是您不需要指定打开它的程序,但我相信这几乎不是优势。任何帮助将不胜感激。

更新1:

创建存档的程序称为opm。可以使用以下命令通过节点包管理器安装它:

之后,您只需使用opm为您打包和解压缩目录。例如,如果我的test主目录中有一个名为的目录,那么我可以打开一个终端并执行以下命令来打包它:

这将创建在test.pack主目录中调用的目录的存档。该.pack文件有 shebang #!/usr/bin/opm.packopm打开一个带有扩展名的文件告诉它它是一个存档,并且opm将它解压缩到同一目录中。

注意:test.pack如果您不希望文件覆盖现有test目录,请更改文件名。

我将shebang添加到.pack文件中,以便在我打开它时它会自行提取。但是,这似乎不起作用。不过,如果我运行以下命令之一,那么它可以工作:

您可以查看我的源代码并根据需要对程序进行任何修改。

更新 2:

好的,我为opm创建了以下.desktop文件并将其存储在目录中:$HOME/.local/share/applications/

现在我可以通过右键单击文件、转到窗口、选项卡并设置为默认应用程序来将.pack文件与opm相关联。现在我可以通过简单地打开文件来解压缩它。.packPropertiesOpen Withopm.desktop.pack

但是我想知道如何将.pack文件与 mime 类型相关联application/opm。目前,这些.pack文件与application/x-java-pack200. 我该怎么做?如果我使用不同的扩展名(例如.opm)会更好吗?通过将打包的档案与 mime 类型相关联,操作系统是否会默认使用opmapplication/opm打开它们,而无需显式设置默认应用程序?Properties > Open With

0 投票
7 回答
554661 浏览

bash - 首选的 Bash shebang 是什么?

对于大多数用途,客观上是否有任何Bash舍邦比其他更好?

  • #!/usr/bin/env bash
  • #!/bin/bash
  • #!/bin/sh
  • #!/bin/sh -
  • ETC

我隐约记得很久以前听说在末尾添加破折号可以防止有人将命令传递给您的脚本,但找不到任何详细信息。