问题标签 [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 回答
168 浏览

python - 相同的shebang不起作用

所以我试图创建一些我想运行的脚本,而无需在每次运行时手动指定解释器。

以上是现有脚本上的 shebang,它可以按照我的意愿运行。

下面是我从头开始编写的脚本的shebang

对我来说,它们看起来相同,但运行第二个给我一个

两者都是使用 kate、utf-8 和 unix 行创建的。两者都和我一模一样。

有任何想法吗?

0 投票
1 回答
126 浏览

python - 在 Unix 中为 Python 安装命名和善用 shebang

我对为 Python 脚本编写 shebang 的标准方法感到困惑。

我有一个普通的“python”链接,取决于系统,它可能是 Python 2.x 或 Python 3.x,这是一个问题,因为两者都不兼容。

作为一个解决方案,我在我的 shebang 中编写了这个版本,并且有类似的东西:

但这似乎很愚蠢,因为它会阻止我的脚本在任何其他 3.x 版本中运行

我注意到有些系统将 python2 链接到最新版本。这很有帮助,因为这样我就可以编写简单的脚本,比如“Hello World”,它不会在每次发布时都中断。

我已经安装了 Python 2.6、2.7、3.1 和 3.2 从可移植性的角度来看,只使用“python”作为 shebang 没有意义。使用确切的版本会妨碍可维护性。我确实有一个 python2 链接,但不是 python3

是否有任何标准和/或 PEP 指定如何安装 Python?还有一个说我部署到必须有一个 python3 和/或 python2 链接到最新版本?

0 投票
2 回答
350 浏览

php - Bitnami PHP 不会从 shebang 评估

我正在尝试从命令行运行 PHP 脚本。当我使用Bitnami的 php 解释器运行它时,它工作正常。例如,我有脚本test_php,其内容是

如果我/Applications/drupal/php/bin/php test_php在 shell 中运行它工作正常:

但是如果我运行test_php,我会得到:

这只发生在 Bitnami 的 PHP 位置上。shebang 适用于 OS X 附带的版本。

0 投票
4 回答
4503 浏览

shell - 未知路径的 Shell 脚本 shebang

是否可以在不知道要执行的程序路径的情况下指定 shebang 行?

也许不指定路径

或指定几个选项

跨平台解决方案的加分项(各种风格的 linux、BSD、OSX 等...)

0 投票
2 回答
2861 浏览

python - 不同版本 Python 的条件 shebang 行

尝试在两台不同的计算机上运行 python 脚本时遇到问题。在每台计算机上,我想使用 python 版本 2.7.3 运行脚本,但是我遇到的问题是两台计算机以不同的方式命名 python 2.7.3。其中一台计算机运行arch linux,在这台计算机上它被命名为python2。另一台计算机正在运行 redhat linux,它使用名称 python2.7.3。

我应该在 shebang 行中使用什么,以便脚本可以在两台计算机上执行而无需任何更改?我真正想要的是某种可以选择使用哪个版本的 Python 的有条件的 shebang 行。我只是运气不好,我必须保留两个不同版本的脚本吗?

PS我不能只使用#!/usr/bin/env python,因为在arch linux计算机上它指的是python 3.2.3,而在redhat linux计算机上它是指python 2.4。

0 投票
2 回答
494 浏览

shell - 当shebang引用不同的shell时奇怪的脚本行为

我最近切换到了 ksh93 shell。我通过在我的 .profile 文件中添加以下两行来做到这一点

自从我这样做后,一些简单的脚本开始以我不理解的方式出现异常。我将其范围缩小到以下名为 say 的简单脚本test.sh

如果我键入命令test.sh fred,我希望看到相同的输出test.sh fred。相反,我看到了test.sh noglob。如果我删除了 shebang 或者我将其更改为读取,#!/usr/local/bin/ksh93那么脚本将按预期工作。

谁能解释发生了什么,或者该怎么做?我难住了。

如果有什么不同,我正在使用 Solaris 5.9。

0 投票
3 回答
1577 浏览

python - Python shebang 和换行符

为了使 Python 脚本在 Linux 和 bash 上可执行,可以使用 shebang

作为脚本的第一行。如果此行恰好以 Windows 样式的换行符 \r\n(回车 - 换行符)而不是 Unix 样式的换行符 \n 结尾,那么 bash 将无法通过 Python 解释器运行脚本。

我正在使用 Python 进行跨平台开发。当我在 Windows 中工作时,自然换行符是 \r\n。当我在 Linux 中工作时,自然换行符是 \n。鉴于我使用 Mercurial 进行版本控制,在包含 shebang 的脚本文件中强制使用 \n 换行符的最佳方法是什么?

0 投票
2 回答
648 浏览

windows - Windows 上的 tcsh:hashbang 文件支持

我在 Windows 上使用 tcsh 的预构建二进制 exe。

我正在尝试编写一些 clojure 脚本。像这样:

首先我尝试在 tcsh 中直接运行它:

不走运:出现“选择正确的程序来打开此文件”窗口,但不执行它。

我正在尝试向它添加 +x mod:

还是一样 :(

问题是:

  • Windows 上的 tcsh 预构建版本是否支持 hashbang?
  • 如果是这样,如何让它用hashbang执行文件?

谢谢很多:-)

0 投票
4 回答
16843 浏览

perl - 为什么shebang线总是第一线?

我有一个简单的 perl 脚本,如下所示:

我可以按如下方式执行此脚本:

如果我添加一些这样的评论:

当我尝试执行时,它给我的输出如下:

这里的重点是,无论如何,shebang 线都应该始终位于顶部。谁能解释为什么?

0 投票
2 回答
441 浏览

c - 在 shell 中运行 C 程序时将相对路径扩展为完整路径

当我的脚本需要与 C 可执行文件通信时,我遇到了问题。我无法获得脚本的完整路径,我需要将其加载并发送到另一个进程。

脚本的名称是myScript

这是C可执行文件的源代码

如果我myScript从终端运行,

  • argv[0]显示可执行文件的路径(我猜那是因为它是位于的信息#!)。
  • argv[1]显示传递给可执行文件的第一个参数,即
    • 如果我./myScript用作参数,那就是我所看到的(相对路径)
    • 如果我/home/user/git/proyect/test/scriptFolder/myScript用作参数,它会显示绝对路径(这是我需要的,但我不想每次都在终端中编写完整路径)

所以我的问题是,如何myScript在调用脚本时获得完整路径而不传递其完整路径?