CONFIG.SYSのコマンドと特殊な環境変数 [DOS]
せっかく手元にMS-DOSとPC DOSの資料があるので、CONFIG.SYSのコマンドと特殊な環境変数についてまとめてみた。
ここではネイティブなDOS環境を対象にしている。Windows 9x/MeのMS-DOSプロンプトやWindows NT系のNTVDMにもCONFIG.SYSに相当するファイルや特殊な環境変数は存在するが、ここに書かれていることとは事情が大きく異なる。
○CONFIG.SYSとは
CONFIG.SYSはDOSのシステム環境設定用のテキストファイルで、読み込むデバイスドライバやバッファの数といったDOSの基本設定を、使用するアプリケーションやパソコンの構成・性能に合わせて指定しておく。起動時にDOSはそれに従って環境を設定する。その後シェル(通常はCOMMAND.COM)を読み込んでそこに制御を移し、AUTOEXEC.BATを実行してDOSの起動が完了する。CONFIG.SYSによる設定はMS-DOS Ver.2.0以降で有効。
(引用元:『MS-DOS Ver.5.0 オペレーティングハンドブック』、技術評論社、1992年)
○CONFIG.SYSの設定方法
CONFIG.SYSはDOSのシステムと同じドライブのルートディレクトリにある。(Aドライブから起動した場合はA:\CONFIG.SYS)。CONFIG.SYSの中身は普通のテキストファイルなのでテキストエディタで編集すればよい。MS-DOS Ver.5.0以降ではEDITコマンド、PC DOS Ver.6.1以降ではEコマンドでスクリーンエディタを利用できる。NEC PC98用MS-DOS Ver.3.1以降ではメニュー選択方式でCONFIG.SYSを作成・編集できるCUSTOMコマンドが用意されている。古いバージョンのDOSだとEDLINというラインエディタ(テレタイプ端末の利用が一般的だった頃のエディタの方式)で編集することになる。
基本的には「コマンド=設定値」の形式で入力する。コマンドは最初の行から順に適用されるため、同じコマンドが存在する場合は後の行のコマンドの設定値が優先される。(DEVICE、DEVICEHIGH、INSTALLを除く。)
○CONFIG.SYSのコマンド一覧
BREAK | |
対象 | MS-DOS Ver.2.0以降 |
機能 | Ctrl+Cキーが押されたときのチェック機能の設定と解除 |
書式 | BREAK ON|OFF |
例 | BREAK=ON |
補足 | プロフラムの処理中にCtrl+Cキーによる処理中断を受け付けるかどうか。 |
BUFFERS | |
対象 | MS-DOS Ver.2.0以降 |
機能 | 指定した数のディレクトリ情報用のキャッシュメモリを割り当てる |
書式 | BUFFERS=n[,m] |
n | ディスクバッファの数を1から62の範囲で指定。 |
m | 2次ディスクバッファの数を1から8の範囲で指定。 |
例 | BUFFERS=15,1 |
補足 | バッファが多いほどディスクアクセスが速くなるが空きメモリが減少する。 消費メモリサイズ=バッファ数×最大クラスタサイズ |
COUNTRY | |
対象 | MS-DOS Ver.3.0以降 |
機能 | 特定の国で使われている時間、日付、通貨表現を指定 |
書式 | COUNTRY=xxx[,[yyy][,[ドライブ:]ファイルパス]] |
xxx | カントリーコードを指定する。日本の場合は081。 |
yyy | コードページを指定する。日本語の場合は932。 |
パス | 国別の情報を含んだファイルの場所を指定する。 |
例 | COUNTRY=081,932,C:\DOS\COUNTRY.SYS |
補足 | Windowsのコントロールパネルで言う所の「地域オプション」に相当。 日本語版のDOSの場合、コードページとして指定できるのは欧米諸国の1バイト言語と日本語のみ。 アラビア語や中国語などの他の2バイト言語のサポートにはそれぞれに対応したDOSが必要になる。 |
DEVICE | |
対象 | MS-DOS Ver.2.0以降 |
機能 | 指定したインストール可能なデバイスドライバをメモリに読み込む |
書式 | DEVICE=[ドライブ:]ファイルパス [パラメータ] |
例 | DEVICE=C:\DOS\JFONT.SYS /P=C:\DOS\ |
DEVICEHIGH | |
対象 | MS-DOS Ver.5.0以降 |
機能 | 指定したインストール可能なデバイスドライバをUMBメモリに読み込む |
書式1 | DEVICEHIGH=[ドライブ:]ファイルパス [パラメータ] |
書式2 | DEVICEHIGH=[/L:領域1[,最小サイズ1][;領域2[,最小サイズ2] [/S]]] [ドライブ:]ファイルパス [パラメータ] |
例 | DEVICEHIGH=/L:2,9680 C:\DOS\ANSI.SYS /X |
DOS | |
対象 | MS-DOS Ver.5.0以降 |
機能 | DOSがUMBメモリへのリンクを維持、またはHMAメモリにDOSのシステムの一部をロード |
書式 | DOS=HIGH|LOW[,UMB|NOUMB] |
例 | DOS=HIGH,UMB |
補足 | DOSをHMAに配置するかどうか、またUMBを使用するかどうかを指定する。 |
DOSDATA | |
対象 | PC DOS Ver.7.0以降 |
機能 | システムテーブルをUMBメモリにロード |
書式 | DOSDATA=UMB|NOUMB |
例 | DOSDATA=UMB |
補足 | システムテーブルとはFILES、FCBS、BUFFERS、LASTDRIVE、STACKSのバッファのこと。 |
DRIVPARM | |
対象 | MS-DOS Ver.3.2以降 |
機能 | 既存のブロックデバイスに対するシステムの特性リストを変更 |
書式 | DRIVPARM=/D:ドライブ番号 [/C] [/F:ファクタ] [/H:ヘッド数] [/I] [/N] [/S:セクタ数] [/T:トラック数] |
例 | DRIVPARM=/D:0 /C /H:2 /S:9 /T:80 |
補足 | パラメータの書式はDRIVER.SYSと同じなので詳細はそちらの情報を参照。 ただしDRIVER.SYSとは異なり、新たな論理ドライブを作成しない。またPC DOSではサポートしていない。 |
FCBS | |
対象 | MS-DOS Ver.3.1以降 |
機能 | FCB(File Control Block)によって同時にオープンできるファイルの最大数を指定 |
書式1 | FCBS=x |
書式2 | FCBS=x,y |
x | 一度にオープンするFCBの数を1から255の範囲で指定。 |
y | 最初にオープンしたy個のファイルのクローズを禁止。0から255の範囲で指定。(NEC PC98用MS-DOSのみ。) |
例 | FCBS=4,0 |
補足 | FCBは初期のバージョンのDOSで提供されていたファイルへのアクセス手段。 MS-DOS Ver.2.0でファイルハンドラに置き換えられたが、互換性確保のためFCBも使えるようになっている。 FCBは階層構造(ディレクトリ)を扱えない問題があり、ほとんどのプログラムはFCBを使わない。 |
FILES | |
対象 | MS-DOS Ver.2.0以降 |
機能 | ファイルハンドルによって同時にオープンできるファイルの最大数を指定 |
書式 | FILES=x |
x | 一度にオープンするファイルの数を8から255の範囲で指定。(ただしVer.2.xのみ5から255の範囲。) |
例 | FILES=30 |
INSTALL | |
対象 | MS-DOS Ver.4.0以降 |
機能 | メモリ常駐プログラムをロードする |
書式 | INSTALL=[ドライブ:]ファイルパス [パラメータ] |
例 | INSTALL=C:\DOS\FASTOPEN.EXE |
LASTDRIVE | |
対象 | MS-DOS Ver.3.0以降 |
機能 | アクセス可能なドライブの最大数を指定 |
書式 | LASTDRIVE=x |
例 | LASTDRIVE=Z |
補足 | DOSは各ドライブ用にデータ構造をメモリ中に割り当てるため、必要な数だけのドライブを指定したほうがよい。 |
NUMLOCK | |
対象 | MS-DOS Ver.6.0以降 |
機能 | 始動時のNUMLOCKの状態 |
書式 | NUMLOCK=ON|OFF |
REM | |
対象 | MS-DOS Ver.5.0以降 |
機能 | その行がコメントであることを示す |
書式 | REM コメント |
補足 | バッチファイルのREMコマンドと同じ。 |
SHELL | |
対象 | MS-DOS Ver.2.0以降 |
機能 | 実行するコマンドインタープリタの名前と場所を指定 |
書式 | SHELL=[ドライブ:]ファイルパス [パラメータ] |
例 | SHELL=C:\COMMAND.COM /P |
補足 | 通常はCOMMAND.COMを指定するが、代替となる他のシェルを指定することもできる。 代表的なシェルに4DOS(Norton UtilitiesでNDOSとして付属した。)がある。 ただ日本国内ではCOMMAND.COMを置換するのではなく拡張を施す方式のシェルが一般的だった。 |
STACKS | |
対象 | MS-DOS Ver.3.2以降 |
機能 | システム割り込みハンドラのデータスタックの動的使用をサポート |
書式 | STACKS=n,s |
n | スタックの数を0または8から64の範囲で指定。 |
m | 各スタックのサイズの数を0または32から512の範囲で指定。 |
例 | STACKS=8,512 |
補足 | 多くのプログラムは各自でスタックを確保するため、通常は0に設定しても問題ない。 |
SWITCHES | |
対象 | MS-DOS Ver.6.0以降 |
機能 | 特別なオプションを指定 |
書式 | SWITCHES=[/W] [/K] [/N] [/F] |
/W | WINA20.386がルートディレクトリ以外のディレクトリにある。 |
/K | 拡張キーボード機能を無効にする。 |
/N | 始動コマンドをバイパスする[F5]キーや[F8]キーを使用できないようにする。 |
/F | 始動時の「Starting MS-DOS...」のメッセージの後の遅延をスキップする。 |
; | |
対象 | MS-DOS Ver.6.0以降 |
機能 | その行がコメントであることを示す |
書式 | ;[コメント] |
? | |
対象 | MS-DOS Ver.6.0以降 |
機能 | その行のコマンドを実行する前に確認メッセージを表示 |
書式 | [コマンド]?= |
例 | DEVICEHIGH?=C:\DOS\ANSI.SYS /X |
MS-DOS Ver.6.0以降では1つのCONFIG.SYSで複数のシステム環境設定(システム構成)を扱うための仕組みが追加された。(NEC PC98用MS-DOS Ver.6.2を除く。)この仕組みはWindows 9x/Meの起動ディスクで利用されている。
[MENU] | |
対象 | MS-DOS Ver.6.0以降 |
機能 | 始動メニューで表示される項目を定義 |
書式 | [MENU] |
補足 | 最初のメニューのブロック名はMENU固定だが、サブメニューはCOMMONとMENU以外なら何でもよい。 |
INCLUDE | |
対象 | MS-DOS Ver.6.0以降 |
機能 | 別の構成ブロック内のコマンドを実行 |
書式 | INCLUDE=ブロック名 |
例 | MENUDEFAULT=BLOCK_A |
MENUCOLOR | |
対象 | MS-DOS Ver.6.0以降 |
機能 | メニューのテキストの文字色と背景色を指定 |
書式 | MENUCOLOR=x[,y] |
x | テキストの文字色を0から7の範囲で指定。 |
y | 画面の背景色を0から7の範囲で指定。 |
例 | MENUCOLOR=7,0 |
MENUDEFAULT | |
対象 | MS-DOS Ver.6.0以降 |
機能 | メニュー省略時のメニュー項目やタイムアウト値を指定 |
書式 | MENUDEFAULT=ブロック名[,タイムアウト] |
例 | MENUDEFAULT=BLOCK_A,10 |
MENUITEM | |
対象 | MS-DOS Ver.6.0以降 |
機能 | メニュー項目を定義 |
書式 | MENUITEM=ブロック名[,メニューテキスト] |
ブロック名 | 対応する構成ブロックの名前を半角70文字以内で指定。 |
メニューテキスト | 表示するテキストを半角70文字以内で指定。 |
例 | MENUDEFAULT=BLOCK_A,Menu A |
補足 | メニューテキストに日本語(DBCS文字)を入れると文字化けして正しく表示されない。 ただしNEC PC98などハードウェアで日本語表示をサポートしている場合は正しく表示される。 |
SUBMENU | |
対象 | MS-DOS Ver.6.0以降 |
機能 | 別の一組の選択項目を表示するメニュー項目を定義 |
書式 | SUBMENU=ブロック名[,メニューテキスト] |
例 | SUBMENU=BLOCK_AA,Sub menu A |
補足 | ブロック名には日本語を指定可能だが半角英数字を使ったほうがよい。 |
○CONFIG.SYSの一例
MENUITEM=CD,Start computer with CD-ROM support.
SUBMENU=NOCDMENU,Start computer without CD-ROM support.
MENUDEFAULT=CD,10
MENUCOLOR=7,0
[NOCDMENU]
MENUITEM=NOCD,Use extended memory area.
MENUITEM=NOCDCACHE,Use extended memory area and disk cache.
MENUITEM=NOCDNOXMA,Only use conventional memory.
MENUDEFAULT=NOCD
MENUCOLOR=7,0
[COMMON]
BUFFERS=15,0
FCBS=4,0
FILES=30
LASTDRIVE=Z
DEVICE=C:\DOS\BILING.SYS
DEVICE=C:\DOS\JFONT.SYS /P=C:\DOS\
DEVICE=C:\DOS\JDISP.SYS
DEVICE=C:\DOS\JKEYB.SYS /106 C:\DOS\JKEYBRD.SYS
[NOCDNOXMA]
DEVICE=C:\DOS\SETVER.EXE
DEVICE=C:\DOS\ANSI.SYS
[NOCD]
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE 1024 RAM
DEVICEHIGH=C:\DOS\SETVER.EXE
DEVICEHIGH=C:\DOS\ANSI.SYS
DOS=HIGH,UMB
[NOCDCACHE]
INCLUDE=NOCD
INSTALL=C:\DOS\FASTOPEN.EXE C: /X
[CD]
INCLUDE=NOCDCACHE
DEVICEHIGH=C:\DRIVERS\OAKCDROM.SYS /D:MSCD001 /L:
○やや特別な意味を持つ環境変数
次の環境変数は特定の場面で特別な意味を持つので、扱いに注意を要する。
COMSPEC | |
設定タイミング | DOS起動時に自動で設定 |
設定対象 | DOSのシステム(COMMAND.COM) |
意味 | COMMAND.COMのファイルパス |
例 | COMSPEC=C:\COMMAND.COM |
補足 | COMMAND.COMの非常駐部が破壊された時の再ロードに使う。 再ロード時にCOMMAND.COMが見つからない場合はそのファイルパスを入力するよう要求される。 |
CONFIG | |
設定タイミング | 始動メニュー選択時 |
設定対象 | なし(通常はAUTOEXEC.BATの処理の分岐に使う) |
意味 | 始動メニューで選択された項目(構成)のブロック名 |
例 | CONFIG=MENUITEM_A |
補足 | AUTOEXEC.BAT内の処理の分岐に使うことを想定して用意されている。 |
COPYCMD | |
設定タイミング | なし(ユーザーが任意で設定) |
設定対象 | COPYコマンド(COMMAND.COM)、MOVE、XCOPYコマンド |
意味 | COPY、MOVE、XCOPYコマンド実行時の既定のパラメータ |
例 | COPYCMD=/Y |
補足 | /Yスイッチ以外は無効。 |
DIRCMD | |
設定タイミング | なし(ユーザーが任意で設定) |
設定対象 | DIRコマンド(COMMAND.COM) |
意味 | DIRコマンド実行時の既定のパラメータ |
例 | DIRCMD=/P /W |
NO_SEP | |
設定タイミング | なし(ユーザーが任意で設定) |
設定対象 | DIRコマンド(COMMAND.COM)、CHKDSK、FORMAT、MEMコマンド |
意味 | 特定のコマンドで数値に区切り文字(カンマ)を付けなくする |
例 | NO_SEP=ON |
TEMP | |
設定タイミング | なし(通常は起動時にAUTOEXEC.BATで設定) |
設定対象 | 一部のDOSコマンドやプログラム |
意味 | 一時ファイルの保存先ディレクトリパス。 |
例 | TEMP=C:\ |
補足 | 通常、一時ファイルはプログラム終了時に削除されるが、正常に終了しなかった場合はそのまま残ることがある。 保存先によっては他のファイルと区別が付かなくなるので、一時ファイル専用のディレクトリを作っておいたほうがよい。 |
TMP | |
設定タイミング | なし(通常は起動時にAUTOEXEC.BATで設定) |
設定対象 | 一部のプログラム |
意味 | TEMPと同じ。 |
補足 | TEMPとTMPのどちらの環境変数を使うかはプログラムによるが、DOSではTEMPを標準としている。 |
PATH | |
設定タイミング | なし(通常は起動時にAUTOEXEC.BATで設定) |
設定対象 | DOSのシステム(COMMAND.COM) |
意味 | 現行ディレクトリで検出できなかったコマンドやバッチファイルなどの実行可能ファイルを指定したディレクトリで検索。 |
例 | PATH=C:\DOS;C:\ |
補足 | セミコロンで区切ることで複数のディレクトリを指定できる。PATHコマンドでも設定可能。 |
PROMPT | |
設定タイミング | なし(通常は起動時にAUTOEXEC.BATで設定) |
設定対象 | DOSのシステム(COMMAND.COM) |
意味 | コマンドプロンプト文字列。 |
例 | PROMPT=$N$G |
補足 | PROMPTコマンドでも設定可能。 |
※MS-DOSとPC DOS(IBM DOS)の用語の違い
これらはそれぞれ呼び方は異なるが意味は同じ。
英語 | 日本語(MS-DOS) | 日本語(PC DOS) |
Configuration block | 環境設定ブロック | 構成ブロック |
Conventional memory | コンベンショナルメモリ | 基本メモリー |
High memory | ハイメモリ | HMAメモリー |
Install | インストール | 導入 |
Start the computer | コンピュータを起動 | システムを始動 |
Startup menu | スタートアップメニュー | 始動メニュー |
Upper memory | 上位メモリ | UMBメモリー |