Windowsでshbangを使って拡張子無しのファイルを実行する方法
ふとPATHEXEに.だけを追加するのを思いついてやってみたら意外なことにうまくいきました。
- まず、システムのプロパティから、環境変数 PATHEXT の最後に ;. (セミコロンとピリオド)を追加します
- 次に、もしRubyがインストールされていなければインストールします。http://rubyforge.org/projects/rubyinstaller/ が簡単
- コマンドプロンプトで、assoc .=rbFile を実行
one-click-installer以外でインストールした人は、必要に応じて、ftype rbFile="c:\ruby\bin\ruby.exe" "%1" %* などと実行。
以上で準備は完了。
- fooというファイルを作ってみます。
#!cat -n aaa bbb ccc
- 実行してみます。
C:\temp>foo 1 #!cat -n 2 aaa 3 bbb 4 ccc C:\temp>
- gnu toolを入れていない人は、例えばこう。
#!findstr A Apple apple cat cAt
- 注意
最初、#!/gnu/bin/cat -n と書いて失敗。フルパスで書くなら、#!/gnu/bin/cat.exe -n のように拡張子まで必要。
Rubyのshbang解釈機能を使っているだけなので、必ずしもRubyでなくてもいいわけですが、Ruby普及活動の一環です。