【问题标题】:Is it possible to override hashbang/shebang path behavior是否可以覆盖 hashbang/shebang 路径行为
【发布时间】:2011-03-18 03:10:11
【问题描述】:

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

【问题讨论】:

  • Windows 不在批处理脚本中使用#!。你指的是Windows下的Cygwin吗?
  • 如果脚本无法修改,则不是编程问题。
  • 不是 Bash,而是处理 shebang 行的内核。
  • @DennisWilliamson 你能提供一些参考吗?
  • @PiotrDobrogost: Here's one.

标签: windows linux bash scripting


【解决方案1】:

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

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

在 Unix/Linux 上你可以说:

prompt$ python2.6 <scriptfile>

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

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

【讨论】:

  • 不幸的是,我使用的语言没有使用 # 作为注释,所以这不起作用 - 当然,如果语言 did 这将是答案支持这个,我给你加分。
  • 郑重声明,使用#作为注释与是否#!无关!在文件的开头将起作用。见en.wikipedia.org/wiki/Shebang_(Unix)
猜你喜欢
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多