X68のシェルにfish.xを使っていて、バッチファイル起動すると「環境のためのメモリが足りません」になる件
誰得?な情報ですが、自分用のメモとして。
私の環境ではX68のシェルにfish.xを使用する環境でバッチファイルなどから
SETで環境変数を使用するとなぜか「環境のためのメモリが足りません」になっていました。
fishからバッチファイルを起動することがあまりないので、
ずっと放置していたが、気になったので調べてみました。
COMMAND.Xをサブシェルで起動したときの環境変数の領域が足りないのかと
思っていたら、Human68KのマニュアルでCOMMAND.Xを調べると、
SETコマンドで必要な「環境エリアサイズ」のデフォルト値は512バイトとの事。
環境エリアというのがいまいちピンときませんが、特に指定していないので
512バイトは割り当てられているはず。
にもかかわらず
なんて小さな変数宣言でもエラーになってしまうので、この問題ではなさそうです。
ということで今度はfish.xのマニュアルで「環境エリア」を検索すると、
”起動するコマンド・ファイルに対して fish の環境変数の完全な複製を渡します。
この環境エリアの余白の量はシェル変数 envmargin で制御することができます。”
こちらもいまいちよく分かりませんが、要はコマンド起動した際に現在fishに
設定されている環境変数を引き継ぐという事っぽい。
という事は大量に環境変数を設定していると、デフォルトの環境エリアのサイズが
足りない?だったらenvmarginで余白を追加してやればいいのかな?
という事で.fishrcに以下を設定したら解消しました。
set envmargin=512
512(byte)という値は適当だが、とりあえず解消したのでそういう事なのだろうと思う。