環境変数とは、コンピュータ上で実行中のプロセスの動作に影響を与える、ユーザーが定義できる値です。環境変数は、プロセスが実行される環境の一部です。たとえば、実行中のプロセスは、TEMP環境変数の値を参照して一時ファイルを保存するのに適した場所を見つけたり、HOMEまたはUSERPROFILE変数を参照して、プロセスを実行しているユーザーが所有するディレクトリ構造を見つけたりすることができます。
それらは1979年にUnixバージョン7で現代的な形で導入されたため、それ以降のLinuxやmacOSを含むすべてのUnix系オペレーティングシステムに搭載されています。 1982年のPC DOS 2.0以降、 Microsoft WindowsやOS/2を含むすべての後継Microsoftオペレーティングシステムにも、構文、使用方法、標準変数名が多少異なるものの、機能として搭載されています。
すべてのUnixおよびUnix ライクなシステム、そして Windows では、各プロセスは独自の環境変数セットを持っています。デフォルトでは、プロセスが作成されると、親プロセスの実行時環境の複製が継承されますが、親プロセスが子プロセスを作成する際に明示的に変更した場合は除きます。API レベルでは、これらの変更は実行中と実行中の間で行う必要があります。あるいは、 bashなどのコマンドシェルから、ユーザーは、または表記を使用して間接的に特定のコマンド呼び出しを呼び出すことで、環境変数を変更できます。実行中のプログラムは、構成目的で環境変数の値にアクセスできます。forkexecenvENVIRONMENT_VARIABLE=VALUE <command>
シェルスクリプトやバッチファイルは、環境変数を使ってデータや設定を子プロセスに伝達します。また、シェルスクリプト内で後で参照するための一時的な値を保存するためにも使用できます。ただし、Unixでは、プロセス外に情報が漏洩しない非エクスポート変数が推奨されます。
Unixでは、スクリプトまたはコンパイル済みプログラム内で変更された環境変数は、そのプロセスと場合によっては子プロセスのみに影響します。親プロセスおよび無関係なプロセスには影響しません。同様に、DOSCOMMAND.COMまたはWindowsバッチファイル内で変数の値を変更または削除すると、その変数はそれぞれそのバッチファイルまたはバッチファイルが存在する期間中のみ変更されますCMD.EXE。
Unixでは、環境変数は通常、システム起動時にシステム初期化スクリプトによって初期化され、システム内の他のすべてのプロセスに継承されます。ユーザーは、使用しているコマンドシェルのプロファイルスクリプトで環境変数を拡張することができ、実際によくそうしています。Microsoft Windowsでは、各環境変数のデフォルト値はWindowsレジストリに保存されるか、ファイルに設定されますAUTOEXEC.BAT。
Unixでは、setuidプログラムには呼び出し元が選択した環境が与えられますが、呼び出し元とは異なる権限で実行されます。動的リンカは通常、環境変数で指定された場所からコードをロードし$LD_LIBRARY_PATH、$LD_PRELOADプロセスの権限で実行します。setuid プログラムがこれを実行すると、呼び出し元が任意のコードを実行させて権限を悪用できるため、セキュリティ上の問題が生じます。このため、libc はsetuid プロセスで起動時にこれらの環境変数を解除します。setuid プログラムは通常、未知の環境変数を解除し、他の環境変数をチェックするか、適切な値に設定します。
一般的に、環境変数の集合は連想配列として機能し、キーと値はどちらも文字列です。文字列内の文字の解釈はシステムによって異なります。リストなどのデータ構造を表現する必要がある場合は、コロン(UnixおよびUnixライクなシステムで一般的)またはセミコロン(WindowsおよびDOSで一般的)で区切られたリストを使用するのが一般的です。
これらの変数は、スクリプト内とコマンドラインの両方で使用できます。通常、変数名の前または周囲に特別な記号を付けて参照します。
慣例として、環境変数名は通常すべて大文字で表記されます。これは、環境変数をプログラミングコードで使用される他の変数や識別子と明確に区別するためです。ただし、環境変数名の大文字小文字の区別はオペレーティングシステムによって異なることに注意してください。つまり、Unix系オペレーティングシステムは環境変数名の大文字小文字を区別しますが、DOS、OS/2、Windowsは区別しません。
ほとんどのUnixおよびUnixライクなコマンドラインシェルでは、環境変数の値は$変数名の前に記号を付けることで取得できます。必要に応じて、変数名を中括弧で囲むこともできます。
ユーザーのホームディレクトリを表示するには、ユーザーは次のように入力します。
echo $HOMEUnixおよびUnixライクなシステムでは、環境変数の名前は大文字と小文字を区別します。
このコマンドは、envすべての環境変数とその値を表示します。printenvまた、コマンドの引数として変数名のみを指定することで、単一の変数を表示することもできます。
DOS、OS/2、Windows のコマンドライン インタプリタ ( や など) ではCOMMAND.COM、CMD.EXE環境変数は、%その前後に記号を付けることで取得されます。
DOS、OS/2、WindowsのコマンドラインインタープリタおよびそれらのAPIでは、環境変数名において大文字と小文字は区別されません。
という名前の環境変数には、ユーザーのホームディレクトリのHOMEDRIVEドライブ文字(末尾のコロンを含む)が格納され、 には、そのドライブ内のユーザーのホームディレクトリの完全なパスが格納されます。:HOMEPATH
ホームドライブとパスを確認するには、ユーザーは次のように入力します。
ECHO %HOMEDRIVE%%HOMEPATH%このコマンドSET(引数なし)は、すべての環境変数とその値を表示します。Windows NT以降では、setコマンドの唯一の引数として指定された接頭辞を指定することで、その接頭辞で始まるすべての変数を表示することもできます。
Windows PowerShellでは、ユーザーは次のように入力できます。
"$Env:HomeDrive$Env:HomePath"または、以下の冗長な同等表現のいずれか。
Write-Output "$Env:HomeDrive$Env:HomePath" echo "$Env:HomeDrive$Env:HomePath" write "$Env:HomeDrive$Env:HomePath" return "$Env:HomeDrive$Env:HomePath" Write-Host "$Env:HomeDrive$Env:HomePath"PowerShellでは、環境変数名において大文字と小文字は区別されません。
以下のコマンドは、すべての環境変数とその値を表示します。
Get-ChildItem env :コマンドenvと はset環境変数を設定するために使用でき、多くの場合、シェルに直接組み込まれています。
以下のコマンドも使用できますが、多くの場合、特定のシェルに依存します。
変数=値 # (等号の周りにスペースを入れてはいけません)Bourneおよび関連シェル用の エクスポート変数 #
export VARIABLE = value # ksh、bash、および関連シェル用
setenv変数の値 # cshおよび関連シェル用
環境変数が効果を発揮する仕組みは、いくつかの単純な原則によって規定されている。
環境変数は、それが設定されたプロセス内でのみ有効です。2つのシェルプロセスが起動され、一方のプロセスで環境変数の値が変更された場合、その変更はもう一方のプロセスには反映されません。
子プロセスが作成されると、親プロセスからすべての環境変数とその値が継承されます。通常、あるプログラムが別のプログラムを呼び出す場合、まずフォークによって子プロセスを作成し、次に子プロセスが必要に応じて環境を調整し、最後に子プロセスが呼び出されるプログラムに置き換わります。この手順により、呼び出し元のプログラムは呼び出されるプログラムの環境を制御できるようになります。
Unixシェルでは、変数はキーワードなしで代入できますexport。このように定義された変数はsetコマンドによって表示されますが、シェルのみに保存され、他のすべてのプロセスには認識されないため、真の環境変数ではありませんprintenv。コマンドはこれらの変数を表示せず、子プロセスも継承しません。
変数=値
プレフィックス構文は、現在のプロセスに影響を与えることなく、「true」環境変数を子プロセスにエクスポートします。[ 1 ]
変数=値プログラム名 [引数]
環境変数の永続性は、セッション全体またはシステム全体に及ぶ場合があります。
unsetは、Unix コマンドライン シェルのBourne シェルファミリー ( sh、ksh、bashなど) とC シェルファミリー ( csh、 tcsh など) の両方で実装されている組み込みコマンドです。シェル変数を unset し、メモリとシェルのエクスポートされた環境から削除します。シェル内部を直接操作するため、シェル組み込みコマンドとして実装されています。 [ 2 ] [ 3 ]読み取り専用のシェル変数は unset できません。読み取り専用の変数を unset しようとすると、コマンドはエラー メッセージを表示し、ゼロ以外の終了コードを返します。unset
DOS、OS/2、Windowsのコマンドラインインタープリタ(など)ではCOMMAND.COM、CMD.EXEコマンドSETは環境変数と値を次の引数を使用して割り当てるために使用されます。
変数を値に 設定します環境変数は以下のようにして削除されます。
変数を設定=引数なしのコマンドSETは、すべての環境変数とその値を表示します。0個以上のスペースがある場合は、内部変数も含まれます。 では、コマンドを使用してグローバルではないローカル変数を割り当て、環境を復元することができます。SET " "CMD.EXESETLOCALENDLOCAL
スイッチ を使用して/?内部ドキュメントを表示するか、ビューアhelpを使用してください。
セット/? ヘルプセット SETLOCAL /? ヘルプ SETLOCAL PowerShellでは、代入は Unix と同様の構文に従います。
$env:VARIABLE = "VALUE"PHPでは、このputenv()関数を使用する必要があります。[ 4 ] [ 5 ]
putenv ( "VARIABLE_NAME" = "VALUE" );環境変数の例としては、以下のようなものがあります。
PATH: ディレクトリパスのリスト。ユーザーが完全なパスを指定せずにコマンドを入力すると、このリストがチェックされ、コマンドにつながるパスが含まれているかどうかが確認されます。HOME( Unix ライク) および(Microsoft Windows):ファイルシステム内USERPROFILEのユーザーのホーム ディレクトリの場所を示します。HOME/{.AppName}( Unix ライク) およびAPPDATA\{DeveloperName\AppName}(Microsoft Windows): アプリケーション設定を保存するため。多くのアプリケーションがUSERPROFILEWindows のアプリケーション設定に誤って使用しています。 はUSERPROFILE、ユーザーが などのパスを選択できるダイアログでのみ使用する必要がありますDocuments/Pictures/Downloads/Music。プログラムによる目的には、APPDATA(複数のデバイス間で共有されるローミングアプリケーション設定用)、LOCALAPPDATA(ローカルアプリケーション設定用)、またはPROGRAMDATA(複数の OS ユーザー間で共有されるアプリケーション設定用) を使用する必要があります。[ 6 ]TERM(Unixライク):使用するコンピュータ端末または端末エミュレータの種類を指定します(例:vt100またはdumb)。PS1(Unixライク): Bourneシェルとその派生シェルでプロンプトがどのように表示されるかを指定します。MAIL(Unixライク):ユーザーのメールがどこにあるかを示すために使用されます。TEMP: プロセスが一時ファイルを保存できる場所。$PATH%PATH%変数と同等です。$HOMEgetpwuid、getuidさまざま$HOMEなシェルスクリプト(およびその他のコンテキスト)で利便性のためによく使用されます。環境変数を使用すると、ユーザーは別のディレクトリを指定することもできます。$PWD$DISPLAY$LD_LIBRARY_PATHexecを検索するディレクトリのコロン区切りのリストが含まれています。$LIBPATHまたは$SHLIB_PATH$LD_LIBRARY_PATH古いUnixバージョンで一般的に使用されていた代替手段。$LANG, $LC_ALL, $LC_...$LANGは、デフォルトのロケールを設定するために使用されます。たとえば、ロケールの値が の場合pt_BR、言語は (ブラジル) ポルトガル語に設定され、該当する場合はブラジルの慣習が使用されます。ローカライズのさまざまな側面は、個別の$LC_変数 ( $LC_CTYPE、、など) によって制御されます。を使用すると、すべての側面で同じロケールを強制できます。$LC_COLLATE$LC_DATE$LC_ALL$TZ/usr/share/zoneinfo)。$BROWSER%s DOS では、マスター環境はプライマリ コマンド プロセッサによって提供され、最初にロードされたときに定義された事前環境を継承します。そのサイズは、パラメータによって 160 [ 12 ]から 32767 [ 12 ]バイトの間で構成できます。子プロセスに継承されるローカル環境セグメントは、通常、保持する内容のサイズに縮小されます。一部のコマンドライン プロセッサ ( 4DOSなど) では、セカンダリ シェルを起動するときに使用できる最小限の空き環境領域を定義できます。[ 12 ]環境変数の内容は保存時に変更されませんが、その名前 (" " なし) は常に大文字に変換されます。ただし、 DR DOS 6.0以降[ 13 ] [ 14 ]のディレクティブで定義された事前環境変数は例外です ( DR-DOS 7.02以降では ("小文字の名前を許可する") の場合のみ)。[ 12 ] [ 15 ]原則として、MS-DOS 7.0以降は小文字の変数名もサポートしていますが、ユーザーがそれらを定義する手段は提供していません。小文字を含む環境変数名は、通常の環境変数と同様に環境に格納されますが、大文字の変数のみを想定して記述されているため、ほとんどのDOSソフトウェアからは見えません。[ 12 ] [ 13 ] [ 14 ]一部のコマンドプロセッサは、変数名の最大長を80文字に制限しています。[ 12 ]環境セグメントのサイズによってのみ制限されますが、一部のDOSおよび16ビットWindowsプログラム[ 12 ] [注1 ]は、環境変数の内容が128文字を超えることを想定していません。DR-DOSは最大255文字、4DOSは最大512文字の環境変数をサポートしています。[ 12 ]は(を介して)構成できるためCONFIG.SYSCOMMAND /E:n%CONFIG.SYSSETSWITCHES=/L%windir%COMMAND.COMCOMMAND.COM/L:128..1024MS-DOS 7.0 以降では、コマンドラインを内部的に最大 1024 文字までサポートするため、環境変数も少なくとも 1024 文字を含むことが想定されます。 DR-DOS の一部のバージョンでは、インストール後に環境を必要としないことが多いドライバに渡される環境を、または/オプション(ゼロ環境)、(代替ドライブ、例)、および(環境をプログラムより上に再配置)によって縮小または再配置して、ドライバの実質的な常駐メモリ使用量を最小限に抑えることができます。[ 16 ] [ 15 ] [ 13 ] [ 17 ] [ 18 ] [ 19 ]SETENVINSTALL[HIGH]LOADHIGH/Z/D[:loaddrive]B:TSR.COM/E
バッチモードでは、存在しない環境変数は長さゼロの文字列に置き換えられます。
標準環境変数または予約済み環境変数には以下が含まれます。
%APPEND%(DOS 3.3以降でサポート)APPEND /E、ディレクトリ名が大文字に変換されることも保証されます。一部の DOS ソフトウェアでは、名前が大文字で保存され、リストの長さが 121 [ 12 ]文字を超えないことが想定されているため、この変数はSETコマンドで変更しないのが最善です。スペースやその他の特殊文字を含む長いファイル名は引用符 ( ) で囲んではいけません"。%CONFIG%(MS-DOS 6.0およびPC DOS 6.1以降でサポートされており、 ROM-DOS [ 20 ]でもサポートされています)IO.SYS、など) によって対応するディレクティブIBMBIO.COMで定義された名前に設定されます。その主な目的は、ブート時に選択されたオプションに応じて、 や同様のバッチジョブでさらに特別なケースを実行できるようにすることです。これは、 のようなディレクティブを使用することで、DR-DOS でエミュレートできます。CONFIG.SYSMENUITEMAUTOEXEC.BATCONFIG.SYSSETSET CONFIG=1%CMDLINE%( 4DOSで導入され、 MS-DOS 7.0以降もサポートされています)COMMAND.COM/U:128..255/L:128..1024@@XCOPY ...%CMDLINE%%COMSPEC%(DOS 2.0以降サポート)C:\COMMAND.COMC:\DOS\COMMAND.COMCONFIG.SYSSHELL%COPYCMD%(MS-DOS 6.2およびPC DOS 6.3以降でサポートされており、 ROM-DOS [ 20 ]でもサポートされています)/Yのデフォルトとしてスイッチ (クエリに対して「はい」とみなす)を指定できます。 のデフォルト値は、コマンドラインでスイッチを指定することで上書きできます。スイッチは、確認を求めることなく既存のファイルを置き換えるようにコマンドに指示します。COPYXCOPYMOVE/Y/-Y/Y%DIRCMD%(MS-DOS 5.0およびPC DOS 5.0以降でサポートされており、 ROM-DOS [ 20 ]でもサポートされています)DIRファイル指定を含む)を指定できるようにします。プリセットのデフォルトスイッチは、コマンドラインで否定スイッチを指定することで上書きできます。たとえば、スイッチ%DIRCMD%が含まれている場合、コマンドラインで/Wを使用することで上書きできます。これは、 DOS Plus [ 21 ]の環境変数や、 DR-DOS のスイッチまたはを使用してのデフォルトスイッチを定義する機能に似ています。[ 13 ]は、 Novell DOS 7以降の外部/ Stackerコマンドでもサポートされています。 [ 13 ]DIR /-W%$DIR%DIR/C/RCOMMAND.COM%DIRCMD%SDIR.COMDIR.COM%LANG%( MS-DOS 7.0以降でサポート)%LANGSPEC%( MS-DOS 7.0以降でサポート)%NO_SEP%(PC DOS 6.3およびDR-DOS 7.07以降でサポートされています)SET NO_SEP=ONまたはを指定することで抑制できます。DR-DOS では、fe のように表示されるシステムの桁区切り記号を上書きすることもできます。[ 12 ]SET NO_SEP=1 SET NO_SEP=.%PATH%(DOS 2.0以降サポート)$PATH同様に、このリストを使用してデータ ファイルを検索します)。通常は(またはMS-DOS 6.0では) コマンドで変更され、ディレクトリ名が大文字に変換されることも保証されます。一部の DOS ソフトウェアでは、名前が大文字で格納され、リストの長さが 123 [ 12 ]文字を超えないことが想定されているため[ nb 1 ] 、この変数はコマンドで変更しない方が良いでしょう。[ 12 ]スペースやその他の特殊文字を含む長いファイル名は引用符 ( ) で囲んではいけません。デフォルトでは、現在のディレクトリが最初に検索されますが、 4DOSなどの一部のコマンドライン プロセッサでは、この検索順序を上書きするために、 " " (" の "current directory") もリストに含めることができます。一部の DOS プログラムはこの拡張機能と互換性がありません。[ 12 ]$LD_LIBRARY_PATHPATHPATH /ESET".%TEMP%(そして%TMP%)%TEMP%が、サードパーティのプログラムは も使用します%TMP%。通常、%TEMP%は よりも優先されます%TMP%。DR -DOSファミリーは、以下のものを含む多数の追加の標準環境変数をサポートしています。
%BETA%COMMAND.COMセカンダリシェルの起動時に表示するオプションのメッセージが含まれています。 [ 22 ]%DRDOSCFG%/ %NWDOSCFG%/%OPENDOSCFG%\.INI.CFGTASKMGR.INITASKMAX.INIVIEWMAX.INIFASTBACK.CFGCOLORS.INIDRDOS.ININWDOS.INIOPENDOS.INIDOS.INIINSTALLSETUPDISKOPTDOSBOOKEDITFBXFILELINKLOCKSECURITY.OVLNWLOGIN.EXESERNOTASKMAXTASKMGRVIEWMAXUNDELETE%DRCOMSPEC%%COMSPEC%、オプションでファイルおよびディレクトリのパスワードも含まれる。あるいは、変数が間違ったコマンドラインプロセッサを指している可能性があるシナリオ(たとえば、DR-DOS コマンドのいくつかのバージョンを別のオペレーティングシステムで実行する場合など)でも変数の使用を強制するために、 ON「 」または「 」という特別な値を保持することもできる。[ 24 ]1%COMSPEC%%COMSPEC%SYS%DRSYS%ON" または " 1" に設定すると、DR-DOSSYSコマンドの一部のバージョンが警告を表示する代わりに、別のオペレーティングシステムで動作するように強制されます。[ 24 ]%HOMEDIR%%INFO%COMMAND.COMによって表示される文字列を定義します。[ 22 ]例えば、セカンダリ シェルを終了する方法をユーザーに知らせるために使用できます。$IPROMPT%LOGINNAME%COMMAND.COMに表示されるユーザー名を定義します。[ 12 ] [ 13 ] [ 22 ]また、同様の名前の擬似変数も参照してください。$UPROMPT%LOGIN_NAME%%MDOS_EXEC%ON" または " "の値を取ることができます。有効にすると、オペレーティングシステムは、アプリケーションがDOS プログラム領域(DPA) を解放したセカンダリ シェルにシェルアウトすることを許可し、セカンダリ アプリケーションに最大限の DOS メモリを利用できるようにします。これにより、アプリケーションを DOS と同じドメインで実行するのではなく、セカンダリ アプリケーションが使用できるようになります。[ 25 ] [ 26 ]OFF%NOCHAR%[Y,N]、現在のシステムデフォルト (通常、N英語バージョンの DR-DOS では " ") を上書きできます。文字列が含まれている場合は、最初の文字のみが大文字で取得されます。一部のコマンドは、/Yクエリで自動的に「Yes」とみなすコマンドラインパラメータもサポートしており、そのようなプロンプトを抑制します。ただし、このパラメータを/Y:yn使用して「Yes」/「No」文字を指定する場合 (これにより、設定が上書きされます)、クエリは抑制されません。関連するディレクティブと環境変数%NOCHAR%も参照してください。[ 24 ]CONFIG.SYSNOCHAR%YESCHAR%%NOSOUND%ON」または「1」に設定すると、特定の状況(操作の完了、ユーザー操作の必要性、誤ったキーの押下など)で一部のDR-DOSコマンドによって発せられるデフォルトのビープ音が無効になります。特定のビープ音を明示的に有効にするコマンドラインオプションは、この設定を上書きします。%OS%DOSPLUS」 ( DOSエミュレーションのDOS Plus 1.2CPCDOS 4.1 )、「 」 ( CP/Mエミュレーションの DOS Plus 1.2)、「DRDOS」 ( DR DOS 3.31 - 6.0、DR DOS Panther、DR DOS StarTrek、DR-DOS 7.02 [ 23 ] - 7.05 )、「EZDOS」 ( EZ-DOS 3.41) が含まれます。 )、" PALMDOS"および" NetWare PalmDOS" ( PalmDOS 1.0 )、" NWDOS" ( Novell DOS 7 )、" NWDOS7" (Novell DOS 7 Beta )、" OPENDOS" ( Caldera OpenDOS 7.01、Caldera DR-OpenDOS 7.02 )、" CDOS" ( Concurrent DOS、Concurrent DOS XM )、" CPCDOS" ( Concurrent PC DOS )、" CDOS386" ( Concurrent DOS 386) )、" DRMDOS" ( DR マルチユーザー DOS )、" MDOS" ( CCI マルチユーザー DOS )、[ 25 ] " IMSMDOS" ( IMS マルチユーザー DOS )、" REAL32" ( REAL/32 )。[ 13 ] [ 27 ] MS-DOSもINTERSVR" " の値を探します。 [ 27 ]後にWindows NT ファミリーで導入された同名の環境変数も参照してください。DRDOS%OS%%PEXEC%$Xのトークンによって実行されるコマンドを定義します。[ 13 ] [ 23 ]PROMPTCOMMAND.COM%SWITCHAR%/定義します。定義されている場合、システムの現在の SwitChar 設定を上書きします。使用可能な文字は " " (DOS スタイル)、 " -" (Unix スタイル)、および " [" (CP/M スタイル) のみです。関連するCONFIG.SYSディレクティブSWITCHAR(システムの SwitChar 設定を設定するため) およびDR-DOS の一部の号に記載されている%/%システム情報変数COMMAND.COM(ポータブル バッチ ジョブの現在の設定を取得するため)も参照してください。%TASKMGRWINDIR%SYSTEM.INITASKMGR%VER%VER。[ 23 ]$Vまた、コマンドのトークンにも使用され、システム情報変数PROMPTによって返される値に影響します。既知の値には、「」(PalmDOS 1.0)、「」(DOSエミュレーションのDOS Plus 1.2 )、「 」(同時DOS 386 2.0)、「」(同時DOS 386 3.0)、「」(DR DOS 3.31)、「」(DR DOS 3.32)、「」(DR DOS 3.33)、「」(DR)が含まれます。 DOS 3.34 )、" " ( DR DOS 3.35 )、" " ( DR DOS 3.40 )、" " ( DR DOS 3.41、EZ-DOS 3.41 )、" " ( DR DOS 3.41T )、" " (同時 PC DOS 4.1 )、" " ( DR DOS 5.0、DR マルチユーザー DOS 5.0 )、 " " ( Novell DR マルチユーザー DOS 5.1 )、" " ( DR Concurrent DOS XM 6.0、DR DOS 6.0 )、" " ( DR Concurrent DOS XM 6.2 )、" " ( Novell DOS 7、Caldera OpenDOS 7.01、DR-DOS 7.02 - 7.05 )、" " ( CCI Multiuser DOS 7.00 )、" " ( DR-DOS 7.07) )、「」 ( IMS マルチユーザー DOS 7.1 )、「」 ( CCI マルチユーザー DOS 7.21 )、[ 25 ]「」 ( CCI マルチユーザー DOS 7.22 ) など[ 13 ] [ 27 ] [ 25 ]%OS_VERSION%1.01.22.03.03.313.323.333.343.353.403.413.41T4.15.05.16.06.277.007.077.17.217.22%YESCHAR%[Y,N]、現在のシステムデフォルト (通常、YDR-DOS の英語バージョンでは " ") を上書きできます。文字列が含まれている場合は、最初の文字のみが大文字で取得されます。一部のコマンドは、/Yクエリで自動的に「Yes」とみなすコマンドラインパラメータもサポートしており、そのようなプロンプトを抑制します。ただし、このパラメータ/Y:yを使用して「Yes」文字を指定すると (これにより、%YESCHAR%設定が上書きされます)、クエリは抑制されません。関連するCONFIG.SYSディレクティブYESCHARと環境変数も参照してください%NOCHAR%。[ 24 ]%$CLS%CLS、内部のデフォルト ( ←[2JDR-DOS では " "、←EAmstradマシンのDOS Plus 1.2 [ 21 ]およびConcurrent DOS、Multiuser DOS、REAL/32のVT52端末では " "、 Multiuser DOS のASCII←+端末では " " ) を上書きします。[ 25 ]変数が定義されておらず、コンソール ドライバが検出されない場合、DR-DOS はMS-DOS/PC DOSと同様にBIOS機能を介して直接画面をクリアします。 8 進数の特別な表記法がサポートされており、ESC ( ASCII-27 = "←" = 1Bh = 33o)などの特殊文字を定義できます。例えば、fe のようにです。バックスラッシュ (" ") 自体を送信するには、" " を二重にすることができます。[ 13 ] [ 22 ] [ 25 ]ANSI.SYSCOMMAND.COMINT 10h/AH=00h COMMAND.COM\nnnSET $CLS=\033[2J\\\%$DIR%/Lまたはを使用して上書きできます/W。[ 22 ] [ 21 ]同様の環境変数%DIRCMD%とDR-DOS COMMAND.COM のDIRオプション/Cも参照してください。 [ 13 ]/R%$PAGE%ON" または " "の値を受け入れることでサポートされています。これを " " に設定すると、これをサポートするコマンド ( DIRやTYPEなど) に追加した場合と同じ効果があります。[ 22 ] [ 21 ]OFFON/P%$LENGTH%/Pさまざまなコマンドでサポートされているオプションまたは自動ページネーションと組み合わせて、キーが押されるまで画面出力を一時的に停止するタイミングをポータブルな方法で制御するために使用されます。[ 22 ] [ 21 ]関連する環境変数%$WIDTH%と、%DIRSIZE%同様の擬似変数も参照してください%_ROWS%。%$WIDTH%DIR /Wやなどのコマンドの画面出力のフォーマットを移植可能な方法で制御するために使用されますTYPE filename。[ 22 ] [ 21 ]関連する環境変数%$LENGTH%や、%DIRSIZE%同様の擬似変数も参照してください%_COLUMNS%。%$SLICE%SLICE。%$ON%TYPE wildcard、たとえばANSI.SYSSET $ON=\033[1mがロードされている場合やIBMまたはESC/Pプリンタの場合など、コマンドでファイル名の表示を強調したり、その他の方法で制御したりするために使用されます。サポートされている特別な8進表記については、[ ]を参照してください。[ 13 ] [ 21 ] DOS PlusおよびDR-DOSでは、この変数はデフォルトでは未定義ですが、ASCII端末のMultiuser DOSのデフォルト値は[ ]です。[ 22 ] [ 25 ]関連する環境変数も参照してください。SET $ON=\016\nnn%$CLS%SET $ON=\033p%$OFF%%$OFF%TYPE wildcard、たとえばANSI.SYSSET $OFF=\033[0mがロードされている場合やIBMまたはESC/Pプリンタの場合など、コマンドでファイル名を表示した後に通常の出力に戻るために使用されます。サポートされている特別な8進表記については、を参照してください。[ 13 ] [ 21 ] DOS PlusおよびDR-DOSでは変数はデフォルトで未定義ですが、ASCII端末のMultiuser DOSのデフォルトはです。[ 22 ] [ 25 ]関連する環境変数も参照してください。SET $OFF=\024\nnn%$CLS%SET $OFF=\033q%$ON%%$HEADER%TYPEプリンターの場合など)のハイライト、ページネーション、またはフォーマットに使用できます。サポートされている特殊な 8 進表記については、[ 22 ]を参照してください。関連する環境変数も参照してください。SET $HEADER=\017\nnn%$CLS%%$FOOTER%%$FOOTER%TYPEこの変数には、DR-DOS 7.02 以降のコマンドでファイルの内容の出力後に発行されるオプションの制御シーケンスを保持できます。これは、通常の出力形式に戻るために使用されますSET $FOOTER=\022\014。上記のプリンタの例を\nnn参照してください。サポートされている特殊な 8 進表記については、[ 22 ]%$CLS%を参照してください。関連する環境変数も参照してください。%$HEADER%Datalight ROM-DOSは、以下のものを含む多数の追加の標準環境変数もサポートしています。
%DIRSIZE%rows[,cols]の非標準画面サイズを定義するために使用されます(DOS Plus のおよびと同様)。 [ 20 ]DIR/P/W%$LENGTH%%$WIDTH%%NEWFILE%%TZ%、、、、および%COMM%はROM-DOSでも使用されます。 [ 20 ]%SOCKETS%%HTTP_DIR%%HOSTNAME%%FTPDIR%
%BEGINLIBPATH%%LIBPATH%LIBPATH.%ENDLIBPATH%%ENDLIBPATH%%BEGINLIBPATH%ですが、のディレクトリのリストの後に%LIBPATH%検索されます。これらの環境変数は重要なオペレーティングシステムのリソースの場所を参照しており、そのため一般的にユーザーに依存しません。[ 28 ]
%APPDATA%%LOCALAPPDATA%%ComSpec%/%COMSPEC%%ComSpec%コマンドプロセッサへの完全なパスが含まれています。Windows NT系のオペレーティングシステムではcmd.exe 、 Windows 9xではCOMMAND.COMです。%COMSPEC%%OS%%OS%の異なる機能セットを区別するためのオペレーティングシステムファミリーのシンボル名が含まれています。これは、Concurrent DOS、Multiuser DOS、REAL/32、DOS Plus、DR DOS 、Novell DOS、OpenDOSなど、 Digital Research由来のすべての DOS 関連オペレーティングシステムにある同名の環境変数に似ています。Windows NT ファミリーでは常に文字列 " "を保持します。[ 29 ]%OS%%OS%Windows_NT%PATH%%PATH%変数内にネストできますが、間接参照は 1 レベルまでです。このサブパス環境変数自体にパスを表す環境変数が含まれている場合、変数%PATH%置換で正しく展開されません。Unix変数と同等です。$PATH%PROCESSOR_ARCHITECTURE%、、、、%PROCESSOR_ARCHITEW6432%%PROCESSOR_IDENTIFIER%%PROCESSOR_LEVEL%%PROCESSOR_REVISION%%PUBLIC%%PUBLIC%変数(Vistaで導入)は、パブリック(擬似)ユーザープロファイルディレクトリ「C:\Users\Public」を指します。%ProgramFiles%、、%ProgramFiles(x86)%%ProgramW6432%%ProgramFiles%ディレクトリを指します。英語システムでのデフォルトは " " です。64 ビット版の Windows (XP、2003、Vista) では、デフォルトが " " の と、デフォルトが " " の も存在します。自体は、環境変数を要求するプロセスが 32 ビットか 64 ビットかによって異なります (これはWindows-on-Windows 64 ビットリダイレクト[ 30 ]が原因です)。C:\Program Files%ProgramFiles(x86)%C:\Program Files (x86)%ProgramW6432%C:\Program Files%ProgramFiles%%CommonProgramFiles%、、%CommonProgramFiles(x86)%%CommonProgramW6432%C:\Program Files\Common Files%ProgramFiles(x86)%C:\Program Files (x86)%ProgramW6432%C:\Program Files%ProgramFiles%%OneDrive%%OneDrive%変数は、Windows NT およびその派生版に存在する特別なシステム全体の環境変数です。その値は、OneDrive ディレクトリが(インストールおよびセットアップされている場合)存在するパスです。 の値は、%OneDrive%ほとんどの場合「C:\Users\{Username}\OneDrive\」です。%SystemDrive%%SystemDrive%変数は、Windows NT およびその派生版に存在する特別なシステム全体の環境変数です。その値は、システム ディレクトリが配置されているドライブです。%SystemDrive%ほとんどの場合、この値は " C:" です。%SystemRoot%%SystemRoot%変数は、Windows NT系オペレーティングシステムに存在する特別なシステム全体の環境変数です。その値は、ドライブとパスを含むシステムディレクトリの場所を示します。ドライブは と同じで%SystemDrive%、クリーンインストール時のデフォルトパスはオペレーティングシステムのバージョンによって異なります。デフォルトでは次のようになります。 \WINDOWS」を使用します。\WINNT。\WINNT35" を使用します。\WTSRV" を使用します。%windir%%SystemRoot%変数は と同じです。)Windows 95~98およびWindows MEは、デフォルトでは「C:\Windows」にインストールされます。その他のバージョンの Windows については、%SystemRoot%上記の項目を参照してください。ユーザー管理変数には、システム内のさまざまなユーザープロファイルが所有するリソースや設定に関する情報が格納されます。原則として、これらの変数は、OSの動作に必要な重要なシステムリソースや場所を参照するものではありません。
%ALLUSERSPROFILE%(%PROGRAMDATA%Windows Vista以降)%USERDOMAIN%%LOGONSERVER%が格納されます。ホーム PC およびワークグループ内の PC の場合、認証サーバーは通常、PC 自体です。Windows ドメイン内の PC の場合、認証サーバーはドメイン コントローラー(Windows NT 4 ベースのドメインではプライマリ ドメイン コントローラー (PDC)) です。%USERPROFILE%NTUSERもできます。%USERNAME%オプションのシステム変数はデフォルトでは明示的に指定されていませんが、特定の組み込みコンソールコマンドのデフォルトの動作を変更するために使用できます。これらの変数は、コマンドライン引数として明示的に指定する必要もありません。
以下の表は、Windowsの英語版における特定の環境変数の一般的なデフォルト値を示していますCMD。これらの値は、以下のファイルから取得できます。
(これらの変数の一部はWindows環境でも定義されますCOMMAND.COMが、重要な点でいくつか違いがあります。 ではCOMMAND.COM、環境変数の名前は常に大文字になります。一部の変数には、長いファイル名ではなく短い8.3が含まれていますが、すべてではありません。環境に存在する変数の一部が欠落している一方で、環境固有の変数もいくつか存在します。)CMDCOMMAND
このリストには、ユーザーの「マイ ドキュメント」ディレクトリの場所を参照する環境変数がないため、プログラムのホームディレクトリを「マイ ドキュメント」ディレクトリに設定するための標準的な方法はありません。
DOSとWindowsのコマンドプロセッサは、擬似環境変数もサポートしています。これらは環境変数のように取得される値ですが、実際には環境に格納されるのではなく、要求されたときに計算されます。
変更または削除されるまで環境に静的に保存される真の環境変数に加えて、バッチ処理のために多数の擬似環境変数が存在する。
いわゆる置換パラメータまたは置換可能パラメータ(Microsoft / IBM の用語)、別名置換変数(Digital Research / Novell / Caldera の用語)[ 23 ]、またはバッチ ファイル パラメータ(JP Software の用語)[ 12 ]%1は、バッチ ジョブの呼び出しパラメータを取得するために使用できます%9。バッチ ジョブでは、環境変数と同じように取得できますが、実際には環境に保存されません。%0SHIFT
DR-DOSCOMMAND.COM [ 23 ]マルチユーザー DOSMDOS.COM / TMP.EXE(ターミナル メッセージ プロセス)、JP Software 4DOS、 4OS2 、 Take Command (旧 4NT)、Windows cmd.exeなどの コマンドライン プロセッサは、システム情報変数(Novell / Caldera の用語) [ 23 ]または内部変数(JP Software の用語) [ 12 ] と呼ばれる擬似環境変数をサポートしており、バッチジョブで実行中のシステムに関するさまざまな動的だが読み取り専用の情報を取得するために使用できます。返される値は、これらの変数が照会された時点でのシステムのステータスを表します。つまり、同じコマンド内でも、連続して複数回読み取ると異なる値が返される可能性があります。これらの変数を照会しても、システムに直接的な影響はありません。これらは環境に格納されないため、SETでリストされず、外部プログラムが取得することもできません。同じ名前の実際の環境変数が定義されている場合、環境変数が再度削除されるまで、対応する変数よりも優先されます。これらは大文字と小文字を区別しません。4DOSなどでは慣例によりほとんどすべての変数にアンダースコア(" ") が接頭辞として付けられますが (fe )、[ 12 ] DR-DOS ではそうではありません(fe )。_%_SECOND%COMMAND.COM%OS_VERSION%
さらに、4DOS、4OS2、4NT、およびTake Commandは、ユーザー定義可能なものを含む、いわゆる変数関数[ 12 ]もサポートしています。これらは内部変数と同じように機能しますが、オプションのパラメータ(fe)を受け取ることができ%@EVAL[]%、その機能に応じてシステムの状態を変更することさえあります。
DR-DOSでサポートされているシステム情報変数COMMAND.COM:
%AM_PM%am」または「 」となります。これは、 Novell NetWareのログインスクリプトにpmある同名の識別子変数に似ています。%DAY%01".." 31")。同様の擬似変数も参照してください。これは、 Novell NetWareログイン スクリプトに%_DAY%ある同名の識別子変数に似ています。%DAY_OF_WEEK%Sun"」、「" Mon" 」、「" " Tue」、「" Wed"」、「Thu" Fri"」、または「" "」となります。これは、 Novell NetWareのログインスクリプトにSatある同名の識別子変数に似ています。%ERRORLEVEL%COMMAND.COM、この擬似変数は外部プログラムまたはRETURNコマンド fe " 0".." 255" によって返された最後のエラー レベルを返します。[ 32 ] [ 33 ]%ERRORLEVEL% Windows での同名の擬似変数とIF ERRORLEVEL条件付きコマンドも参照してください。%ERRORLVL%000".." 255"。[ 32 ] [ 33 ]マルチユーザー DOSでは、これはシェルによって終了するプログラムの戻りコードに自動的に更新される真の環境変数です。[ 25 ]%ERRORLEVEL% DR-DOS の関連する擬似変数とIF ERRORLEVELコマンドも参照してください。%GREETING_TIME%morning"」、「" afternoon"」、または「" "」となります。これは、 Novell NetWareのログインスクリプトにeveningある同名の識別子変数に似ています。%HOUR%1。これは、 Novell NetWareのログインスクリプトに12ある同名の識別子変数に似ています。%HOUR24%00。これは、 Novell NetWareログインスクリプトに23ある同名の識別子変数に似ています。同様の擬似変数も参照してください。%_HOUR%%MINUTE%00".." ")。これは、 Novell NetWareログイン スクリプトにある59同名の識別子変数に似ています。同様の擬似変数も参照してください。%_MINUTE%%MONTH%01".." ")。これは、 Novell NetWareログイン スクリプトにある12同名の識別子変数に似ています。同様の擬似変数も参照してください。%_MONTH%%MONTH_NAME%January"、 " February"、March" " April、May" June"、 " July"、 " "、 " August"、September" October"、または " " となります。これは、 Novell NetWare のログイン スクリプトにあるDecember同名の識別子変数に似ています。%NDAY_OF_WEEK%1」 )。これは、 Novell NetWare のログイン スクリプトにある同名の識別子変数に似ています。71%OS_VERSION%%VER%。%VER%が定義されていない場合は、%OS_VERSION%" " を返します。これは、 Novell NetWareログインスクリプトにoffある同名の識別子変数に似ており、DR-DOS 以外のバージョンの DOS についてもバージョンを返す場合があります。%SECOND%00".." "。これは、 Novell NetWareログインスクリプトに59ある同名の識別子変数に似ています。同様の擬似変数も参照してください。%_SECOND%%SHORT_YEAR%93.." 99"」、「 " 00.." " 」などです。これは、 Novell NetWareのログインスクリプトに92ある同名の識別子変数に似ています。%YEAR%そして%_YEAR%%YEAR%擬似変数は、現在の日付の年を 4 桁の形式 (" 1980".." ") で返します。これは、 Novell NetWareログイン スクリプトに2099ある同名の識別子変数に似ています。DR-DOS 7.02 以降では4DOSとの互換性のために追加され、同じ値を返します。[ 12 ]%_YEAR%%/%COMMAND.COM、この擬似変数はシステムの現在のSwitChar/設定を返します。「 」(DOSスタイル)または「-」(Unixスタイル)のいずれかです。[ 34 ] [ 35 ]関連するCONFIG.SYSディレクティブSWITCHARと環境変数も参照してください%SWITCHAR%。%_CODEPAGE%1".." 65533" ) を返します。fe " 437", " 850", " 858"。この変数は元々4DOS [ 12 ]で導入されましたが、 DR-DOS 7.02 以降でも使用できるようになりました。コマンドも参照してください。COMMAND.COMCHCP%_COLUMNS%40、「」80、「」、「132」などです。この変数は元々4DOS [ 12 ]で導入されましたが、 DR-DOS 7.02以降でも使用できるようになりましたCOMMAND.COM。DOS Plusの同様の環境変数も参照してください%$WIDTH%。%_COUNTRY%1".." 65534" )を返します。1米国の場合は" "、44英国の場合は" "、49ドイツの場合は" " 、ISO 860120049の場合は" "、 ISO 8601 とユーロのサポートがある場合は" "を返します。[ 35 ] [ 36 ]この変数は元々4DOSで導入されましたが、[ 12 ] DR-DOS 7.02 以降でも使用できるようになりました。ディレクティブも参照してください。21049COMMAND.COMCONFIG.SYSCOUNTRY%_DAY%1 " 31"」などです。この変数は元々4DOS [ 12 ]で導入されましたが、DR-DOS 7.02以降でも使用できるようになりました。同様の擬似変数も参照してください。COMMAND.COM%DAY%%_HOUR%0 .." 23" のように。この変数は元々4DOS [ 12 ]で導入されましたが、DR-DOS 7.02 以降でも使用できるようになりました。同様の擬似変数も参照してください。COMMAND.COM%HOUR24%%_MINUTE%0 " 59"」などです。この変数は元々4DOS [ 12 ]で導入されましたが、DR-DOS 7.02以降でも使用できるようになりました。同様の擬似変数も参照してください。COMMAND.COM%MINUTE%%_MONTH%1 " 12"」などです。この変数は元々4DOS [ 12 ]で導入されましたが、DR-DOS 7.02以降でも使用できるようになりました。同様の擬似変数も参照してください。COMMAND.COM%MONTH%%_ROWS%25」、「」43、「」、「50」などです。この変数は元々4DOS [ 12 ]で導入されましたが、 DR-DOS 7.02以降でも使用できるようになりましたCOMMAND.COM。DOS Plusの同様の環境変数を参照してください%$LENGTH%。%_SECOND%0 " 59"」です。この変数は元々4DOS [ 12 ]で導入されましたが、DR-DOS 7.02以降でも使用できるようになりました。同様の擬似変数も参照してください。COMMAND.COM%SECOND%ネットワークがロードされたDR-DOSでサポートされるシステム情報変数COMMAND.COM:
%LOGIN_NAME%NETXでも機能します(そうでない場合は空の文字列が返されます)。同様の名前の環境変数も参照してください。%LOGINNAME%%P_STATION%????????????。値はネットワークアダプタのMACアドレスに依存しますが、上書きすることも可能です。これは、 Novell NetWareのログインスクリプトにある同名の識別子変数に似ています。%STATION%1接続が確立されている間は静的なままです。これは、 Novell NetWareのログインスクリプトにある同名の識別子変数に似ています。%FULL_NAME%%LOGIN_NAME%動的環境変数(DOSでは内部変数またはシステム情報変数CMD.EXEとも呼ばれる)は、コマンドライン拡張機能が有効になっている場合にサポートされる擬似環境変数であり、照会されるたびにさまざまな離散値に展開されます。つまり、同じコマンド内でも複数回照会すると値が変わる可能性があります。バッチジョブやプロンプトで使用できますが、環境変数には保存されません。したがって、一覧表示されずSET、外部プログラムが読み取ることもできません。大文字と小文字は区別されません。
間接的には、Windows の もサポートされており、内部的にコマンドを実行するためCOMMAND.COMに を呼び出すように変更されています。CMD.EXE
%CD%CDこの擬似変数は、引数なしで呼び出された場合のコマンドの出力に相当する現在のディレクトリに展開されます。現在のディレクトリによっては長いファイル名が返される可能性がありますが、現在のディレクトリが常に8.3形式CMD.EXEであるという事実により、内部的に が呼び出された場合でも、短いファイル名が返されます。COMMAND.COMCOMMAND.COMCOMMANDCMD%CMDCMDLINE%CMD.EXE例えば " C:\Windows\system32\cmd.exe"。Windows の では、が内部的にを呼び出すためCOMMAND.COM、これは " " のようなものを返す可能性があります。C:\Windows\system32\cmd.exe /c ...COMMAND.COMCMD.EXE%CMDEXTVERSION%CMD.EXE(たとえば、Windows NT1では " 、Windows 2000およびWindows XPでは " )。2%DATE%%ERRORLEVEL%0この擬似変数は、最後に設定されたエラー レベル、つまり「 」から「 」までの値255(先頭のゼロなし)に展開されます。[ 32 ] [ 37 ] [ 33 ]%ERRORLEVEL%外部コマンドと一部の内部コマンドは、実行時にエラー レベルを設定します。DR -DOS の下にある同じ名前の擬似変数とコマンドも参照してくださいIF ERRORLEVEL。%HIGHESTNUMANODENUMBER%%RANDOM%0この擬似変数は「 」から「 」までの乱数を返します32767。%TIME%%TIME%と の%DATE%両方の変数を使用する場合は、深夜の時刻繰り越し問題を回避するために、これらをこの特定の順序で素早く連続して読み込むことが重要です。Unix ライクなシェルには同様の動的に生成される変数があり、bash は$RANDOMそのよく知られた例です。ただし、これらのシェルにはローカル変数の概念があるため、特別なローカル変数として説明されます。[ 38 ]
BROWSER 環境変数の標準化。Eric Raymond は、既存の PAGER、MAILER、EDITOR 変数に加えて、新しい環境変数 BROWSER の使用を推進しています。この取り組みは、ソーシャル システムをハッキングする実験としてテストされています。
Env::Browser - 環境変数 $BROWSER を処理して Web ブラウザを実行する
環境変数 BROWSER を設定すると、[…] 常に目的のブラウザを選択できます。
{{cite book}}:|work=無視されました (ヘルプ) (注: NWDOSTIP.TXT はNovell DOS 7およびOpenDOS 7.01に関する包括的な資料であり、多くの未公開機能や内部構造の説明が含まれています。提供されているリンクは、この資料の一部である HTML 変換版のファイルへのリンクです。)MPDOSTIP.ZIP4DOS5TIP.TXT(注:提供されているリンクは、コレクションの一部であるHTML変換版のファイルへのリンクですMPDOSTIP.ZIP。)INSTALL=
/
INSTALLHIGH=
/
HIINSTALL=
でロードされるドライバの数
と事前環境の現在のサイズに応じて、数キロバイトの希少な DOS メモリを節約できます […] この独自の […] 機能は、既知のメモリマネージャ/オプティマイザには見られません。 […]
[…] CTMOUSE.ASM の prepareTSR ルーチンで、ゼロ環境に関するコメントを見つけました。 […]
DESQview
または
DRDOSゼロ環境? […] リリース環境ブロック […] 問題があればスキップ […]
MEM
スタイルのユーティリティ用のゼロパッド
[…]
{{cite newsgroup}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)非推奨リンクは、2017年9月3日にarchive.todayにアーカイブされました。[…] set DRSYS=ON (オプション) SYS に対して、外部環境で実行していることを認識しており、このシナリオで個別に表示されるいくつかの警告や追加情報画面を ACK することなく続行したいことを伝える場合 […]
{{cite book}}:|work=無視されました (ヘルプ)Wayback Machineに2021年4月23日にアーカイブされました非推奨リンクは2017年9月11日にarchive.todayにアーカイブされました(注:BATTIPS.TXTはMPDOSTIP.ZIPの一部です。提供されているリンクは、HTMLに変換された古いバージョンのBATTIPS.TXTファイルを指しています)。