MS-DOSでは、ファイル名は大文字小文字を区別せず、最大8文字まで(さらに任意でピリオドと3文字を追加可能)という制限があります。Emacsはこれらの制限を十分に把握しているため、他のオペレーティングシステム向けに意図されたファイル名も適切に処理できます。例えば、ファイル名の先頭にあるドット ‘.’ はMS-DOSでは無効であるため、Emacsはこれらをアンダースコア ‘_’ に透過的に変換します。そのため、デフォルトの初期化ファイル(Emacs初期化ファイルを参照)は、MS-DOS上では _emacs と呼ばれます。ピリオドの前後にある余分な文字は、通常MS-DOS自体によって無視されます。したがって、LongFileName.EvenLongerExtension というファイルにアクセスすると、実際には 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は、インストール先のディレクトリが環境変数 HOME の値であるかのように動作します。つまり、Emacsのバイナリ emacs.exe がディレクトリ c:/utils/emacs/bin にある場合、Emacsは HOME に ‘c:/utils/emacs’
が設定されているものとして動作します。特に、Emacsが初期化ファイル _emacs
を探すのはこの場所です。これを踏まえれば、GNUやUnixと同様に、ファイル名の中で ‘~’ をホームディレクトリのエイリアスとして使用できます。また、Emacsを起動する前に環境変数
HOME を設定することも可能です。その値が、前述のデフォルト動作を上書きします。
MS-DOS上のEmacsは、DJGPPのエミュレータライブラリに、I/Oデバイスがそのディレクトリ内に名前を持つかのように振る舞う機能があるため、/devという名前を特別に扱います。いかなるディスクにおいても、/devという名前の実際のディレクトリを使用することは避けることを推奨します。