背景
「シェルスクリプトを書いて自前のコマンドを作りたい」誰もが抱く、人間の根源的な願望です。
shebang(1行目の#!/bin/bash
など)を書いておけば拡張子が.sh
でなくてもbashで実行されるので、
- コマンドっぽいファイル名にして
- 実行権限を付与して
- パスの通ったディレクトリに置いておく
これで自作のコマンドが作れます。
適当なファイル名をつけて、秀丸エディタで開いて...
あれ?いつも使っているシェルスクリプト用のファイルタイプ別設定が有効にならない?
秀丸エディタは「シェルスクリプトかどうか」を拡張子で判別しているので、これはまったく当然の動作です。
対処方針
秀丸エディタでファイルを開いた時、拡張子で判別不可 & shebangが書かれている 場合、
シェルスクリプト用のファイルタイプ別設定を使う。
という秀丸マクロを用意します。
マクロ作成
あらかじめ、シェルスクリプト用のファイルタイプ別設定はShellScript
という名前で登録しておきます。
以下のマクロで設定を切り替えます。
// shebangを解釈する
// 先頭行の文字列を取得
moveto 0,0;
$LINE = gettext(0,0,linelen2,0,1);
if( currentconfigset == "" ){
// ファイルタイプ別設定が空(=共通設定)の場合のみshebangをチェック
if ( $LINE == "#!/bin/bash" ) {
// とりあえず暫定的に完全一致のみ見ている 改善の余地があるかも
// 一時的な設定 として"ShellScript"を適用する
configset "ShellScript", 0;
}else if ( $LINE == "#!/bin/sh" ) {
configset "ShellScript", 0;
}
}
とりあえず#!/bin/bash
と#!/bin/sh
だけ対処しました。
マクロ登録
これを秀丸エディタで以下に登録します。
メニュー>マクロ>マクロ登録>自動起動>ファイルを開いた直後
これで自作コマンド作りが捗りますね。
補足
新しくshebangを書いたファイルは一度開き直さないとファイルタイプ別設定が有効になりません。
ファイル保存時に自動起動するマクロも登録できるので、そちらに登録しても良いかも。