情報科学部2年
オペレーティングシステム演習
Q&A

2009/04/29 更新

総合INDEX
連絡事項・TOP   講義     課題   成績出席記録
  掲示     資料     Q&A  



Q&A

回数 受付日付 内容
第2回 09/04/23 環境変数の設定は不要ではないか?


ページTOPへ




Q:環境変数の設定は不要ではないか?
授業で「環境変数」のBXSHAREを設定するように指示があったが、dlxlinuxは環境変数を設定しなくても動作した。
MINIXの方では、run.batの編集で、実行ディレクトリを移しているし、環境変数の設定は、不要ではないか?

A:
「dlxlinuxが、環境変数の設定なしで動作した」というのは、非常に良い観察力だと思います。
dlxlinuxは、動作するときにdlxlinuxフォルダの中のbochsrc.bxrcというファイルを参照しますが、この「環境スクリプト」ファイルでは、BXSHAREという記述が無効化されています。
#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-us.map
この行の、一番左の#が、bochsrc(環境ファイル)のコメント記号です。

オプションとして、ユーザが書き換えられるようにコメントアウト(コメント記号をつけて、参照しない文章として扱うように)しているため、BXSHAREは読まれません。
従って、dlxlinuxでは結果的に環境変数を使っていないので、エラーにはなりません。

それに対して、インストールしたminix2.0.4のminix.bxrcファイルでは、BIOSの指定部分からいきなり$BXSHAREを引用しています。少なくとも環境変数として
romimage: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000
vgaromimage: $BXSHARE/VGABIOS-elpin-2.40
の2行で使用しています。

実行ディレクトリ(カレントディレクトリ)をbochs.exeの存在するディレクトリに移すことで、bochs.exeの実行には問題はありませんが、環境変数が読めないため、run.batをダブルクリックするのではなく、minix.bxrcをダブルクリックするような起動法だと、メモリが見つからないというエラーが起きて、実行できなくなります。

この2行の解読では、エラーは出ていません。ということは、$BXSHAREが利用できないため、デフォルトとしてカレントディレクトリに存在するBIOS-bochs-latestなどのファイルを読みに行き、成功したか、または、デフォルトのファイルを読みに行って、実際にはBIOS-bochs-latestではないファイルを読んだか、そのいずれかだと判断されます。
このことは、「環境変数を指定しなくても大丈夫」ということではなく、「偶然、同じディレクトリに必要なファイルがあったため、きちんと動作したが、いつもうまくいくとは限らない」と解釈すべきだと、思われます。

確かに、結果的には環境変数なしで動作しますので、結果オーライではあります。ですが、本来想定している使い方ではありませんから、環境変数は、できるだけ、(その仕様書などで)指定されているとおりに指定するのが、正しい使い方だと考えてください。



ページトップへ戻る