2017-06-14 63 views
0

我正在编写一个旨在用于Unix类型平台和Windows并包含可执行文件的gem。应该如何命名可执行文件?在Unix类型的平台下,它通常的格式为someprog,包含一个shebang“#!/ usr/bin/env ruby​​”;在Windows下它通常具有someprog.rb的形式,并依赖于“.rb”扩展名与Ruby的文件关联。但是对于这两个平台的宝石来说,处理它的正确方法是什么?在Unix和Windows中包含可执行文件的公约,包括可执行文件

+1

既然在* nix系统中存在任何扩展名或根本没有扩展名,它就不会承载文件本身的执行属性,为什么不把它设置成'.rb'文件,以便它通过文件关联在窗口上工作, * nix系统严格依据执行权。 – engineersmnky

+0

是的,我可以做到这一点,但它似乎不自然 - 这将*要求*,用户键入“someprog.rb”,并且在POSIX类型的环境中看起来不自然,通常在不知道的情况下调用* name *或**关心**,不管* name *是二进制可执行文件,脚本还是tcl/perl/python/ruby​​ /&c程序。 – varro

+0

不,如果您提供别名或链接到您的命令,它不需要用户添加扩展名。该别名或链接将是实际称为的内容。 –

回答

0

事实证明,我终究没有问题 - 我可以简单地使用Unix约定,将可执行文件someprog命名为shebang *并且没有扩展名,它可以在Unix类型和Windows平台上使用。显然,宝石安装过程会导致安装一个“辅助器”脚本,在两种操作系统下调用实际脚本。 *大概,我甚至不需要Unix下的shebang,但是我仍然喜欢它。