问题标签 [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 - 相同的shebang不起作用
所以我试图创建一些我想运行的脚本,而无需在每次运行时手动指定解释器。
以上是现有脚本上的 shebang,它可以按照我的意愿运行。
下面是我从头开始编写的脚本的shebang
对我来说,它们看起来相同,但运行第二个给我一个
两者都是使用 kate、utf-8 和 unix 行创建的。两者都和我一模一样。
有任何想法吗?
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 链接到最新版本?
php - Bitnami PHP 不会从 shebang 评估
我正在尝试从命令行运行 PHP 脚本。当我使用Bitnami的 php 解释器运行它时,它工作正常。例如,我有脚本test_php
,其内容是
如果我/Applications/drupal/php/bin/php test_php
在 shell 中运行它工作正常:
但是如果我运行test_php
,我会得到:
这只发生在 Bitnami 的 PHP 位置上。shebang 适用于 OS X 附带的版本。
shell - 未知路径的 Shell 脚本 shebang
是否可以在不知道要执行的程序路径的情况下指定 shebang 行?
也许不指定路径
或指定几个选项
跨平台解决方案的加分项(各种风格的 linux、BSD、OSX 等...)
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。
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。
python - Python shebang 和换行符
为了使 Python 脚本在 Linux 和 bash 上可执行,可以使用 shebang
作为脚本的第一行。如果此行恰好以 Windows 样式的换行符 \r\n(回车 - 换行符)而不是 Unix 样式的换行符 \n 结尾,那么 bash 将无法通过 Python 解释器运行脚本。
我正在使用 Python 进行跨平台开发。当我在 Windows 中工作时,自然换行符是 \r\n。当我在 Linux 中工作时,自然换行符是 \n。鉴于我使用 Mercurial 进行版本控制,在包含 shebang 的脚本文件中强制使用 \n 换行符的最佳方法是什么?
windows - Windows 上的 tcsh:hashbang 文件支持
我在 Windows 上使用 tcsh 的预构建二进制 exe。
我正在尝试编写一些 clojure 脚本。像这样:
首先我尝试在 tcsh 中直接运行它:
不走运:出现“选择正确的程序来打开此文件”窗口,但不执行它。
我正在尝试向它添加 +x mod:
还是一样 :(
问题是:
- Windows 上的 tcsh 预构建版本是否支持 hashbang?
- 如果是这样,如何让它用hashbang执行文件?
谢谢很多:-)
perl - 为什么shebang线总是第一线?
我有一个简单的 perl 脚本,如下所示:
我可以按如下方式执行此脚本:
如果我添加一些这样的评论:
当我尝试执行时,它给我的输出如下:
这里的重点是,无论如何,shebang 线都应该始终位于顶部。谁能解释为什么?
c - 在 shell 中运行 C 程序时将相对路径扩展为完整路径
当我的脚本需要与 C 可执行文件通信时,我遇到了问题。我无法获得脚本的完整路径,我需要将其加载并发送到另一个进程。
脚本的名称是myScript
这是C可执行文件的源代码
如果我myScript
从终端运行,
argv[0]
显示可执行文件的路径(我猜那是因为它是位于的信息#!
)。argv[1]
显示传递给可执行文件的第一个参数,即- 如果我
./myScript
用作参数,那就是我所看到的(相对路径) - 如果我
/home/user/git/proyect/test/scriptFolder/myScript
用作参数,它会显示绝对路径(这是我需要的,但我不想每次都在终端中编写完整路径)
- 如果我
所以我的问题是,如何myScript
在调用脚本时获得完整路径而不传递其完整路径?