シェルスクリプトやインタプリタ型言語でエンジンを実行したい方へ - sunfish-shogi/shogihome GitHub Wiki
エンジンを起動する条件
インタプリタ型言語、あるいはシェルスクリプトをエンジンとして登録することができますが、以下の注意点があります。
Linux や macOS の場合、以下の条件を満たすことが必要です。
- シバン (Shebang) を正しく記述していること
- シバンとはテキストファイルの先頭に記述する
#!で始まる命令です。 - シェルスクリプトを
/bin/bashで実行したい場合には#!/bin/bashと書きます。 - Python であれば
#!/usr/bin/env pythonが一例です。- /usr/bin/env を使う場合は環境変数でパスが通っている必要があります。
- プロセスの呼び出し方によって環境変数が異なる場合があります。
- Issue #231 も参考にしてください。
- シバンとはテキストファイルの先頭に記述する
- 実行権限が付与されていること
- 例えば
chmod +x ファイル名等で実行権限を付与します。(この例だと全てのユーザーが対象になります。) - 権限がついているかどうかは例えば
ls -lで確認できます。
- 例えば
Windows の場合は拡張子 .exe .cmd .bat に対応しています。
将棋所との動作の違いについて
将棋所の古いバージョンでは、テキストファイルに対して無条件に Bash を実行していました。 しかし、これはファイルの実行権限や拡張子を無視したセキュリティ的に好ましくない実装です。 将棋所の掲示板で指摘があり、新しいバージョンでは確認画面が追加されたものの、依然として実行権限を無視しています。
ShogiHome では標準的な方法で子プロセスを実行しているため、 OS で推奨されている方法でスクリプトを設定してください。