〜Mule for Win32/Meadow を使用する上で必要な DOS の知識〜

# この文書は以前 DOS を使ったことのない人(=Windows95/98 しか知らない人)向けのものです。


前置き)なぜ必要なのか

Emacs/Mule(Meadow) を使うに当たっては、単独で使うだけではなく、様々なソフトウエア(主に UNIX 生まれのものを移植したもの)と組み合わせて使うことにより無限の広がりが出てきます。

ところが、これらのソフトウエアは UNIX の流儀で作られており、操作も UNIX のコマンドラインから使うことを前提にしており、Windows の GUI しか知らないと大変取っつきにくいことになります。

とくに環境変数とかパスの概念なんかは知らないと外部プログラムとの連携が使えない、というもったいないことになります。

ですが、Windows9x しか触ったことがないとこの辺が全然わからない、と思うのでちょっと解説しておきます。(分かり易くするためにちょっとウソも付くかも知れませんですが)

なお、ここで「UNIX の流儀なのに何故 DOS?」と思われたかも知れませんが、DOS っていう OS は UNIX を参考に作られたのでここで説明する程度の内容はほぼ同じなのです。(だからこそ UNIX のソフトを移植してそのままの流儀で扱うことが出来るわけです(^^;)


1.ディレクトリ

1)ディレクトリとは?

Windows95 では フォルダといわれてますが、ファイルを格納するための階層構造と言って良いでしょう。(さすがにこのへんが既にわからない、という人は入門書でも読んで下さい(^^;)

2)カレントディレクトリ

よく使われるのですが、「現在のディレクトリ」のことです。Windows などの GUI では意識していないことが多いですがしっかり使っているのです。

…例えばあるソフトで文書を作成しているとします。完成して保存しようとすると、ダイアログが出てきますね?大抵はそのプログラムのあるディレクトリがまず出てくると思います。このディレクトリこそがその文書を作成していたときのカレントディレクトリです。

つまりカレントディレクトリというのは「今作業しているディレクトリ」のことです。

プログラム毎の標準のカレントは普通そのソフトのあるディレクトリですが、変更するにはそのプログラムのショートカットを作ってそれを右クリックして「プロパティ」-「作業フォルダ」で変更できます。(むろんそのショートカットから起動したときに限るが)

# DOS 窓を立ち上げると「c:¥windows>」というプロンプト(AT 互換機の場合)が出ると思いますが、この時のカレントディレクトリは c:¥windows なわけです。

##余談(Program Files)

Windows の標準のディレクトリに“Program Files”なる名前を持つものがあるのはご存じだと思うのですが…

で、ここにインストールされるのが標準であるプログラムの多いこと…しかし、実はこの名前には大きな問題があるのです。

この様にディレクトリ名の中にスペースが含まれていると、多くのプログラムはスペースのところで終了した、と認識してしまいます。従って基本的には付けない方がよい名前です。

にもかかわらず Windows はここを標準のプログラム置き場に使ってやがる(-.-#)凸

というわけで、なるべくここにはインストールしないようにしましょう。(MS Office がファイル置き場=カレントに使う“My Documents”も同様)


2.環境変数

1)環境変数とは?

「変数」ですから値があり、それが変化しうるわけです。(^^;

というのはサテオキ…

これはある環境変数に値を指定すると、その環境変数を参照して動くアプリケーションがその値を使うのです。

…例えば Mule は起動するとき環境変数 HOME を見て、そこに指定されたディレクトリにある「.emacs」などの設定ファイルを読み込みます。(後でも書きますが、バッチファイルで HOME をいくつか設定しておけば色んな設定で起動できます)

つまり Mule というアプリケーション にとって 環境変数"HOME"は「設定ファイルを置いてある場所」なのです。

これらの環境変数は HOME 以外にいろいろあります(Mule は HOME 以外にも様々な環境変数を参照できます)し、アプリケーションによって参照する環境変数も違います。(HOME などはよく使われますが)

当然、個人個人の利用環境によってどの環境変数をどういう値に設定するかは異なります。各アプリケーションの付属のドキュメントなどを参照して決めて下さい。

2)環境変数の設定

普通は Windows95 の場合起動ドライブのルート(PC98 なら a:¥、AT 互換機なら c:¥ )にある autoexec.bat に以下のような書式で設定します。(環境変数“HOGEHOGE”に“fugofugo”という値を設定するとき)
set HOGEHOGE=fugofugo
そうすると次回起動したときに システムにこの環境変数が設定され、これを参照するアプリケーションが幸せになれるわけです(^^;

#Windows NT ではコントロールパネルからマシン全体の環境変数と各ユーザー毎の環境変数が設定できます。

3)一時的な環境変数の設定

autoexec.bat だと環境変数は全てのアプリケーションに対して同じ値になってしまいますが、例えば Mule の設定ファイルをいくつか使い分けたいなどの理由で、環境変数を一時的に変えたければ、同様の書式でバッチファイルを書いてそのバッチファイル内でアプリケーションを起動させるようにすればいいです。(この場合 autoexec.bat での設定より優先されます)


3.シェル・パスを通す

1)シェル

command.com (DOS 窓の実体のプログラム; WindowsNT では cmd.exe)でも tcsh でも bash でもいいのですが、これらプログラムはは「シェル」と呼ばれます。

コンピュータを使用する人間が OS に命令を与え、相互の仲立ちをする部分です。

これらはコマンド文字列を入力してやるとその文字列を解釈してもし自分自身に対する命令(内部コマンド)であれば自ら働き、そうでなければその文字列を名前に持つプログラム(外部コマンド)を起動させて働かせます。

で、コマンドインタープリター(コマンドを翻訳するもの)とも呼ばれます。

# Windows のエクスプローラーも一種のシェルです。

2)パスを通す

さて、外部コマンドを起動させるとき、シェルはどうやってその外部コマンド(プログラム)を探すのでしょう?

まず、command.com などシェルはカレントディレクトリを探します。で見つからなければ「パスの通った」ディレクトリを順番に探すのです。(正しくは“コマンドサーチパス”とかいうらしい;もっとも最近のシステムではセキュリティ上からカレントはパスには入れないことが普通ですが)

つまり、「パスを通す」というのは「あらかじめ外部コマンドのある場所を指定する」ことなのです。(もちろん外部コマンドを呼び出すときにフルパスで指定してやればパスが通っていなくても良いのですが(^^;…面倒でしょ?)

パスの通し方は、やはり autoexec.bat で
set path=c:¥hogehoge¥fugofugo
とやればいいのですが、Windows ではあらかじめいくつかのディレクトリにパスが通っていますので、いきなりこれをやると元々のパスが消えてしまうので、
set path=%path%;c:¥hogehoge¥fugofugo;c:¥foo¥bar
とやって「元のパスに追加する」書式にした方がよいでしょう。

ここまで読むと、勘のいい方なら「なんだ、これも環境変数じゃないか」と思われたかもしれませんね。その通り、「パスを通す」ということは「環境変数 path を設定する」ということです。

# なお、同名のプログラムがあった場合、パスを先に通した方が優先されます。(パスを通した順に探すので)つまり、上の例で言うと c:¥hogehoge¥fugofugo と c:¥foo¥bar に同名のプログラムがあると前者の方にあるものが使われます。

## で、Cygwin などで Windows 標準のコマンドと同名のコマンドがあったりするのでこのような場合は使いたい方を先にパスを通しておかないといけません。



YOSHIZAWA Masahiro <manbou@ceres.dti.ne.jp>