せっかなくので、やってみた。

日々のあんなこと、こんなこと、せっかくなのでやってみた

X68のシェルにfish.xを使っていて、バッチファイル起動すると「環境のためのメモリが足りません」になる件

誰得?な情報ですが、自分用のメモとして。

私の環境ではX68のシェルにfish.xを使用する環境でバッチファイルなどから SETで環境変数を使用するとなぜか「環境のためのメモリが足りません」になっていました。
fishからバッチファイルを起動することがあまりないので、 ずっと放置していたが、気になったので調べてみました。

COMMAND.Xをサブシェルで起動したときの環境変数の領域が足りないのかと 思っていたら、Human68KのマニュアルでCOMMAND.Xを調べると、 SETコマンドで必要な「環境エリアサイズ」のデフォルト値は512バイトとの事。
環境エリアというのがいまいちピンときませんが、特に指定していないので 512バイトは割り当てられているはず。
にもかかわらず

set hoge=HOGE

なんて小さな変数宣言でもエラーになってしまうので、この問題ではなさそうです。

ということで今度はfish.xのマニュアルで「環境エリア」を検索すると、

”起動するコマンド・ファイルに対して fish の環境変数の完全な複製を渡します。
 この環境エリアの余白の量はシェル変数 envmargin で制御することができます。”

こちらもいまいちよく分かりませんが、要はコマンド起動した際に現在fishに 設定されている環境変数を引き継ぐという事っぽい。
という事は大量に環境変数を設定していると、デフォルトの環境エリアのサイズが 足りない?だったらenvmarginで余白を追加してやればいいのかな?

という事で.fishrcに以下を設定したら解消しました。
set envmargin=512
512(byte)という値は適当だが、とりあえず解消したのでそういう事なのだろうと思う。