【发布时间】:2015-05-14 19:19:14
【问题描述】:
我相信我已经在我使用的项目中看到了一些这样的例子,但我现在找不到它们。我拥有的是一个 ruby 项目,其结构如下:
~/projects/ruby/foo/bin
bar.rb
bar.cmd
bar.sh
我的应用程序完全位于 bar.rb 中。我在所有文件路径逻辑中都有处理符号链接的逻辑,因此 ~/bin/bar 的符号链接将正常工作。
我遇到的问题是我希望这个文件在 windows 和 linux 上都能正常工作,因此我从 bar.rb 中取出了一个 shebang 行并想将它移到 bar.sh
#!/usr/bin/env ruby
但是现在我必须将这个 bash 文件中的所有 os 参数转发到 ruby 文件,这样它才能正常工作。我在 windows cmd 文件上也没有太大的成功。
是否有更简单的方法来实现与 os 参数一起使用的跨平台 shebang 行为?
【问题讨论】:
-
Shebang 不是跨平台的。你想在这里做什么?您的应用程序只有
.sh和.cmd入口点吗?这些脚本有什么作用吗?如果不是,最好完全避免它们。 -
我知道shebang不是跨平台的,这就是为什么我没有把它放在bar.rb中。这个想法是 .sh 和 .cmd 文件避免使用“ruby file.rb [args]”,而是使文件可以与“bar [args]”一起使用,只要 bash 文件或 cmd 的快捷方式文件位于您的 PATH 环境变量中。如有必要,我可以提供更多应用程序的上下文。
-
ruby 解释器也应该忽略 Windows 上的 shebang 行,因此它应该是可移植的,因为离开那里是安全的。我认为 Windows 倾向于使用默认的扩展可执行文件来解决这类问题(所以我认为只需将 bar.rb 粘贴在
%PATH%的某个位置就足够了)。
标签: ruby bash batch-file shebang