问题标签 [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.
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 运行的工具来运行脚本
python - Shebang 与 doxygen 的冲突
doxygen 在带有 shebang 的 python 脚本上不能正常工作吗?
我尝试了一个带有shebang的python脚本到我公司的工具目录并运行了doxygen。它根本无法显示命名空间(函数)。
有类似经历的小伙伴请分享一下。
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: true
on Backbone.history
,Router
忽略哈希标签。
如果我设置pushState: false
,我将无法像我在上面第一段中描述的那样设置 URL。
谢谢你的任何提示。
cygwin - 有没有办法在 Cygwin 中为 shebang 指定一个位置?
我有一些我经常在 windows(cygwin) 和 linux 中使用的脚本,我想让这些脚本在这两种环境中都可以执行。有没有办法为我的 python 安装位置设置别名,例如这样
仍然会找到我的 python 安装,即使就 cygwin 而言,它位于/cygdrive/c/Python26/python
?
python - 在 bash 中,argparse(和已弃用的 optparse)如何响应 python 程序名称后的“tab”按键?
我已经测试过optcomplete
使用该optparse
模块。它的例子是一个简单的文件,所以我可以让它工作。我还使用该argparse
模块对其进行了测试,因为不推荐使用之前的模块。但我真的不明白 python 程序是如何以及由谁在制表机上调用的。我怀疑bash
与shebang
line 和argparse
(or optparse
) 模块一起以某种方式参与。我一直在试图解决这个问题(现在要阅读源代码)。
我有一个更复杂的程序结构,其中包括处理参数的代码段的包装器。它的argparse.ArgumentParser()
实例化和调用add_argument()
——它们被超类到另一个中间模块以避免重复代码,以及被调用的包装器——都在一个函数内部。
我想了解此选项卡完成在 bash 和 python 之间的工作方式(或就此而言,任何其他解释器,如perl
)。
注意:我对 bash 补全(我刚刚学到的)有相当了解,并且我想我理解 bash(only) 自定义补全。
注意:我已经阅读了其他类似的 SO 问题,但没有人真正回答这个问题。
编辑:这是 bash 功能。
我已经了解了 python 模块如何通过读取os.environ
变量 的值来了解在命令行中键入的单词
这些变量仅在制表符上具有值。我的问题是如何触发 python 模块?
python - Python 库模块应该以#!/usr/bin/env python 开头吗?
Python 库模块应该以#!/usr/bin/env
python 开头吗?
查看 in 的第一行*.py
(/usr/share/pyshared
Python 库存储在 Debian 中的位置)可以发现,既有以 hashbang 行开头的文件,也有不以 hashbang 行开头的文件。
是否有理由包括或省略这一行?
.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
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
。.pack
用opm打开一个带有扩展名的文件告诉它它是一个存档,并且opm将它解压缩到同一目录中。
注意:test.pack
如果您不希望文件覆盖现有test
目录,请更改文件名。
我将shebang添加到.pack
文件中,以便在我打开它时它会自行提取。但是,这似乎不起作用。不过,如果我运行以下命令之一,那么它可以工作:
您可以查看我的源代码并根据需要对程序进行任何修改。
更新 2:
好的,我为opm创建了以下.desktop
文件并将其存储在目录中:$HOME/.local/share/applications/
现在我可以通过右键单击文件、转到窗口、选项卡并设置为默认应用程序来将.pack
文件与opm相关联。现在我可以通过简单地打开文件来解压缩它。.pack
Properties
Open With
opm.desktop
.pack
但是我想知道如何将.pack
文件与 mime 类型相关联application/opm
。目前,这些.pack
文件与application/x-java-pack200
. 我该怎么做?如果我使用不同的扩展名(例如.opm
)会更好吗?通过将打包的档案与 mime 类型相关联,操作系统是否会默认使用opmapplication/opm
打开它们,而无需显式设置默认应用程序?Properties > Open With
bash - 首选的 Bash shebang 是什么?
对于大多数用途,客观上是否有任何Bash
舍邦比其他更好?
#!/usr/bin/env bash
#!/bin/bash
#!/bin/sh
#!/bin/sh -
- ETC
我隐约记得很久以前听说在末尾添加破折号可以防止有人将命令传递给您的脚本,但找不到任何详细信息。