-
Notifications
You must be signed in to change notification settings - Fork 0
/
winshebang.txt
207 lines (146 loc) · 7.63 KB
/
winshebang.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
--------------------------------------------------------------------------------
Windowsでシェバングのようなことをする「winshebang.exe」
by おぱ (opa)
--------------------------------------------------------------------------------
・概要
UNIX等のOSには、スクリプトを実行ファイルのように簡単に実行する
ための仕組みがあり、実行しようとするファイルの先頭が「#!」で始まる
場合、先頭行のそれ以降を、そのスクリプトのインタプリタを起動するための
コマンドとみなし、それを実行することができます。
この先頭行はシェバング行などと呼ばれます。
例えば、foo という名前のスクリプトの先頭行が「#! /usr/bin/perl」
だった場合、/usr/bin/perl foo のように実行してくれます。
一方Windowsにはそのような仕組みはなく、拡張子によって実行ファイル
なのかバッチファイルなのかスクリプトなのかといったことが判断されます。
そのため、UNIX等の環境で実行されることを想定して作られたスクリプトを
Windows環境で実行するには、関連付けを設定して拡張子をつける
(リネームする)とか、OSにはバッチファイルのように見せかけたうえで
そのバッチファイル中でインタプリタを起動して自分自身を渡す、という
ようなことをするようにスクリプトを書き換えるとかが必要でした。
本プログラムは、実行したいスクリプトと同名の.exeファイルとして
スクリプトとペアで配置されることを想定されています。実行されると、
同名のスクリプトのシェバング行の記述に従ってインタプリタを起動します。
つまり、スクリプトに修正を加えることなく、直接実行に近いことを
可能にします。
また、.exeファイルが存在することになるため、ショートカットの
作成時やスクリプトからスクリプトを呼ぶ際の制約が少なくなります。
・用途
WindowsでもUNIX等と同じように、シェバング行を使いたい場合に。
・動作環境
WindowsNT 4.0以降。(2000/XP/Vista等)
動作確認はWindowsXP上で行っています。
・使用法
最初に、実行したいスクリプトを用意してください。後述の例外を除き
先頭行はシェバング行でなければなりません。いわゆるUNICODEテキストの
BOMが存在してもいけません。(UNIX等と同様です)
次に、実行したいスクリプトと同じディレクトリに同名で(但し拡張子は
.exeのまま)本プログラムをコピーしてください。例えば、スクリプトの
名前が foo の場合は foo.exe としてください。
もし、スクリプトが baz.pl のように拡張子つきの場合、本プログラムを
baz.pl.exe とすることで動作はしますが、これを実行するためには
baz.pl.exe と拡張子まで指定する必要があります。
本プログラムは2種類ありますので、どちらをコピーして使用するかは
目的に応じて判断してください。
winshebang.exe : コンソールアプリケーションで、起動した
プログラムが終了するまで待ちます。
winshebangw.exe : ウィンドウアプリケーションで、起動した
プログラムの終了を待ちません。
以上で準備は完了です。
実行したいスクリプトが複数ある場合、同じ数だけ本プログラムも
それぞれコピーしてください。
インストーラ/アンインストーラはありません。
設定ファイルやレジストリは使用していません。
本プログラムは、起動されると、まず自分自身のファイル名から
拡張子(.exe)を取り去ったファイル名のファイルを探します。
見つかった場合、その先頭行を読み出し、#! で始まっていればそれ以降を
プログラム名とそのオプションとして実行します。また、ファイル名も
引数として渡します。
その際、UNIX等の環境との互換性の向上を図るため、プログラム名の
読み替えを行います。例えばシェバング行はよく「#! /usr/bin/perl」など
のように書かれますが、Windows環境では、ディレクトリ構成が異なるため
普通は /usr/bin/ に perl はありません。
そこで、プログラム名のディレクトリ名の部分は無視し、環境変数PATHに
従って目的のプログラムが探されるようにします。
また、対象プログラムが "env" だった場合はこれをスキップして、その次に
書かれている文字列をプログラム名として使います。
さらに winshebangw.exe(ウィンドウアプリケーション) の場合は、
実行されるプログラムもウィンドウアプリケーションになるよう、
読み替えを行います。
現在以下の4つがあらかじめ定義されており、追加・変更することは
できません。
perl → wperl
ruby → rubyw
python → pythonw
php → php-win
その他、.bat, .cmd, .js, .jse, .vbs, .vbe, .jar, .class の
拡張子をもつバッチファイルやスクリプトにも対応しています。
例えば、bar.bat を実行したい場合は本プログラムの名前を bar.exe と
してください。
これらは先頭行のシェバング行は必要ありません。
実際はこれらのファイルは、本プログラムがなくともコマンドラインから
直接実行することができるものもありますが、.exeファイルとしての実体
があると便利な場合などのために、これらについても対応を行っています。
拡張子とプログラム名との対応づけは以下のとおりです。
追加・変更することはできません。
.bat, .cmd → そのまま実行(cmd)
.js, .jse, .vbs, .vbe → cscript (winshebang.exeの場合)
wscript (winshebangw.exeの場合)
.jar, .class → java (winshebang.exeの場合)
javaw (winshebangw.exeの場合)
・オプション
ありません。
・使用上の注意
本プログラムは、実行されるプログラムないしスクリプトが安全なもので
あるかどうかを検知しません。
あなたの意図せぬプログラムやスクリプトが、あなたの知らないうちに
インストールされる可能性がある環境では、本プログラムは使用しないで
ください。
・サポート
このプログラムの公式webページは
http://sourceforge.jp/projects/winshebang/ です。
ダウンロードは
http://sourceforge.jp/projects/winshebang/releases/ から行えます。
サポートは SourceForge.JP 内のフォーラム
http://sourceforge.jp/projects/winshebang/forums/ で行います。
・謝辞
記載の社名、製品名は各社の商標または登録商標です。
このプログラムは、Borland C++ でコンパイルされています。
C++Builder Trial/Free :
http://www.codegear.com/jp/downloads/free/cppbuilder
このプログラムは、UPX で圧縮されています。
UPX : http://upx.sourceforge.net/
・著作権表示およびライセンス
Copyright (c) 2011-2013 by opa
All rights reserved.
ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の
条件を満たす場合に限り、再頒布および使用が許可されます。
・ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および
下記免責条項を含めること。
・バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、
上記の著作権表示、本条件一覧、および下記免責条項を含めること。
・書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝
または販売促進に、作者(おぱ)または貢献者の名前を使用しないこと。
本ソフトウェアは、著作権者および貢献者によって「現状のまま」提供されて
おり、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する
適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証も
ありません。著作権者も貢献者も、事由の如何を問わず、また損害発生の
原因如何を問わず、かつ責任の根拠が契約であるか厳格責任であるか
(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する
可能性を知らされていたとしても、本ソフトウェアの使用によって発生した
(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、
業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な
損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わない
ものとします。
・変更履歴
・新規作成。(2011/08/16 version 1.00)
・.jar と .class にも対応した。(2011/08/26 version 1.01)
・winshebangw.exeにおいて、#!行にコマンド名だけでなくオプションも
与えていた場合に、コマンド名の読み替えが行われていなかったのを修正。
(2013/08/18 version 1.02)
・winshebangw.exeも、起動したプログラムの終了を待つよう修正。
(これまではプログラムを起動したあと直ちに終了していた)
・内部ロジックの見直し、スリム化。(2013/09/11 version 1.03)
--------
制作・著作
winshebang@ken16.net
おぱ (opa)