MS-DOSでは、ファイル名は大文字小文字を区別せず8文字に制限され、それに加えてオプションでピリオドと追加の3文字を使用できます。Emacsは他のオペレーティングシステムで、ファイル名を処理するためのこれらの制限を充分認識しています。たとえばファイル名の前のドット‘.’はMS-DOSでは無効なので、Emacsはそれらを透過的にアンダースコアー‘_’に変換します。したがって、MS-DOSではデフォルトのinitファイル (Emacs初期化ファイルを参照してください) は_emacsと呼ばれます。ピリオドの前後の余分な文字は、一般的にMS-DOS自身により無視されます。したがってファイルLongFileName.EvenLongerExtensionをvisitした場合、それは暗黙にlongfile.eveとなりますが、それでもEmacsはモードラインに長いファイル名を表示し続けます。それ以外ではMS-DOSで有効なファイル名を指定するのはユーザーの責任です。上記の透過的な変換は、Emacsに組み込まれたファイル名だけにたいして機能します。
MS-DOSでのファイル名にたいする上記の制限は、オリジナルのファイル名の文字を失うことなしにバックアップファイルの名前を構築するのを、ほとんど不可能にします (単一または番号つきバックアップを参照してください)。 たとえばdocs.txtというファイルにたいするバックアップファイルの名前は、単一のバックアップを使用しているときでさえdocs.tx~になります。
Windows 9X、Windows ME、Windows
2000/XPでEmacsをDOSアプリケーションとして実行する場合、長いファイル名のサポートをオンに切り替えることができます。これを行なうと、Emacsはファイル名を切り詰めたり、ファイル名を小文字に変換するかわりに、指定された文字通りのファイル名を使用します。長いファイル名のサポートを有効にするには、Emacsを開始する前に、環境変数LFN
を‘y’にセットします。残念なことにWindows
NTはDOSプログラムが長いファイル名にアクセスすることを許さないので、MS-DOSにたいしてビルドされたEmacsは、短い8+3のエイリアスだけを見ることになります。
MS-DOSにはホームディレクトリーという概念がないので、MS-DOS上のEmacsはEmacsがインストールされた場所が、環境変数HOME
の値であるかのように振る舞います。つまりEmacsのバイナリーemacs.exeがディレクトリーc:/utils/emacs/binにある場合、EmacsはHOME
が‘c:/utils/emacs’にセットされているかのように動作します。この場所は特に、Emacsがinitファイル_emacsを探す場所でもあります。これを念頭におけば、GNUやUnixのように、ファイル名の中で‘~’をホームディレクトリーのエイリアスとして使用できます。Emacsを開始する前に、その環境でHOME
変数をセットすることもできます。この変数の値は、上記のデフォルトの振る舞いをオーバーライドします。
MS-DOSのEmacsは、/devという名前を特別に使います。なぜならGJGPPのエミュレーターライブラリーの機能は、I/Oデバイスの名前がそのディレクトリーにあるかのように振る舞うからです。わたしたちは任意のディスクにたいして、/devという名前のディレクトリーの使用を避けることを推奨します。