是否可以覆盖hashbang / shebang路径行为

时间:2010-07-19 20:51:55

标签: windows linux bash scripting

我在Windows上编写了一堆脚本(无法修改)。 Windows允许其#!命令中的相对路径。我们试图在Unix上运行这些脚本,但Bash似乎只尊重其#!指令中的绝对路径。我环顾四周但未能在Bash中找到一个选项或者是一个旨在替换和解释名称的程序。是否可以覆盖该功能 - 甚至可能使用不同的shell?

1 个答案:

答案 0 :(得分:4)

通常,您只需指定二进制文件来执行脚本,这将导致#!被忽略。所以,如果你有一个类似的Python脚本:

#!..\bin\python2.6
# code would be here.

在Unix / Linux上你可以说:

prompt$ python2.6 <scriptfile>

它将使用命令行二进制文件执行。我将hashbang行视为要求操作系统使用该行上指定的二进制文件的行,但您可以通过不将该脚本作为普通可执行文件执行来覆盖它。

最糟糕的情况是,您可以编写一些包装器脚本,这些脚本将明确告诉解释器为您正在使用的所有平台执行脚本文件中的代码。