いったんセットした環境変数をクリアするには
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 をクリアするような事態に陥ったのかは上を見てください。