2017-06-14 65 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,但是我仍然喜歡它。