E.Suzuki dj98 Tips
DJGPP98 Tips

ここにはわざわざコーナーにするほどでもない細かいことを書きます。
しかし、細かいことだけにどこにも書いてなくて大ハマリするのだ。

Tips大募集!
自分でページを作るほどではないけど、日々苦労して問題を解決し続けているあなた!あなたも、Tips を書きませんか?ほんの数行でかまいません。このページとリンクした小さなページを書いてくださればすぐにリンクを張ります。メールください。
e-suzuki@sys.eng.shizuoka.ac.jp


Contents
環境変数 COMSPEC
環境変数クリアプログラム


環境変数 クリアプログラム

いったんセットした環境変数をクリアするには
set env1=[CR]
とするとクリアできますが、クリアしたい環境変数がたくさんあるときは面倒でやってられません。そこで、環境変数をクリアしてくれるプログラムを作りました。
envc.c環境変数クリアプログラムソース
このプログラムをオプション無しで実行すると すべての環境変数を
set env1=
set env2=
set env3=
set env4=
という形で`標準出力に'出力するので、バッチファイルにリダイレクトして実行すればいっぺんにすべての環境変数をクリアできます。
a:\> envc.exe > envc.bat
a:\> envc.bat
a:\> del envc.bat
しかし、`すべての'というのが曲者で COMSPEC をクリアしてしまってえらいことになりました。ここにおいてあるソースは COMSPEC を無視するようになっているので大丈夫です。 ただし、コンパイルは普通のリアルモードのコンパイラでやってください。gccでコンパイルすると実行時に djgpp.env で設定されている項目まで環境変数に設定されるので正しい環境変数を表示しなくなります。


環境変数 COMSPEC

DJGPP を使っている人は自分で環境変数を設定すると思いますが、かってに設定される環境変数というのも存在します。それが COMSPEC です。これには command.com の在処が設定されており、これをクリアしてしまうとえらいことになります。
コマンドラインから普通に内部コマンド copy や echo を使うと実行できるし、外部コマンドも実行できるのに、make からは内部コマンドを呼べなるなるらしく コンパイルはできるのにファイルのコピーができないという状況になってしまいました。GNU make は 勝手に Drive C: を読みにいったあとにハングしました。これで二日間悩み続けました。command.comや make が壊れたのかと思って fc で比べてみたりしましたよ。
なぜうっかり COMSPEC をクリアするような事態に陥ったのかは上を見てください。