• ベストアンサー

環境変数

akishizumaの回答

回答No.3

環境変数というのは、UNIXを参考にしたCP/Mその後のMS-DOSに 引き継がれたものです。 先に回答なされている方の言う通りで プログラム(アプリケーションやOS関連やシェルやバッチファイルも含む)に 汎用性を持たせる為のものです。 MS-DOSの流れを汲むものはコマンドラインから入力された コマンド(COPYコマンドやDELコマンド等)を COMMAND.COMというコマンドインタプリタが解釈してコマンドを実行します。 ここまで簡単に書いたのですが疑問符だと思います。 環境変数ってどういう時に使ったりするのという疑問も出てきたのでしょう。 で、ここから回答への補足でご質問されている 「COMMAND.COM自身が利用する環境変数」と 「MS-DOSは実行する本体?だから環境変数とかは意味がないのでは?」 が関係してきます。 例えば、COMMAND.COMの起動を命令されました。 COMMAND.COMは命令されたはいいが作業をどこで実行しようかと考えます。 ここで、環境変数を参照するわけです。 貴方や私のマシン毎にディレクトリ構成は違うかもしれませんし、 COMMAND.COMに作業してもらいたいディレクトリも 貴方と私では違うかもしれません。 ここで、COMMAND.COMに作業するディレクトリを必ずこのディレクトリと プログラム内で決めてしまうと 貴方や私のマシンの様に環境が異なる場合に 「作業するディレクトリがないよぉ、起動できないよぉ」 とCOMMAND.COMが困ってしまいます。 そこで 作業するディレクトリを示す情報を参照すると 「%HOMEDRIVE%%HOMEPATH%」の様に書いてあります。 HOMEDRIVE、HOMEPATHって何処という情報を環境変数を参照しで解釈して (HOMEDRIVE=C:、HOMEPATH=\となっているとすると) 作業するディレクトリをCドライブのルートディレクトリ(\)だとCOMMAND.COMは 判断します。 因みに環境変数COMSPECで参照できる情報は 何処にあるCOMMAND.COMをコマンドインタプリターとして 使用するかという情報です。 COMMAND.COM自身が利用する環境変数でCOMSPECというのは微妙かなと思います。 試しに、DOS窓をあけてコマンドプロンプトでSETと打ってENTERキーを押下してみて下さい。 COMSPEC意外にも沢山の環境変数を見ることが出来ます。 コマンドプロンプトのアイコンがみつけられなければ お使いのOSがWin98系ならば 「スタート」→「ファイル名を指定して実行」で でcommandと お使いのOSがWinNT/2000系ならば 「スタート」→「ファイル名を指定して実行」で でcmdと 入力してみて下さい また、 「同じ名前のコマンドがあれば、MS-DOSが最初に見つけた方の コマンドが実行されてしまうんでしょうか? 」については そう考えて良いと思います。 但し、カレントディレクトリに指示されたコマンドを見つけることが 出来なかった場合に 環境変数のPATHで指定されたディレクトリを探しにいって 最初に見つけた指定されたコマンドを実行します。 という説明で如何でしょうか。 因みに下記に文言の説明を付記しておきますので参照して頂ければ幸いです。 ※シェルやバッチファイルについてはプログラムの親戚と思って頂いても  あながち間違いでは有りません。 ※コマンドライン:Windowsでは確かコマンドプロンプトというアイコンがあって  それをクリックするとDOS窓が開いて「C:\> 」みたいのが出てきます。  これがコマンドラインです ※コマンドとは簡単に言えば使用者がコンピュータにこういう事やってよ  みたいな命令のことを指すと思って頂いて大丈夫です。  使用者が作ったプログラムの場合もありますが細かいことは ※コマンドインタプリタ:入力されたコマンドの文字列を判断して  指定された命令を実行します。  COMMAND.COMにはCOPYコマンドやDELコマンド等が内包されており、  FORMATコマンド、SCOPYコマンド等はCOMMAND.COMから切り離された  別プログラムとして存在しています。 ※ディレクトリ:フォルダとも呼称されます。 ※%~%は%で挟まれた文字列が環境変数であるとCOMMAND.COM等のプログラムが  判断します。  %HOMEDRIVE%ならば、COMMAND.COMは「HOMEDRIVE」が環境変数であると  判断します。 ※カレントディレクトリ:命令をコマンドラインから入力する場合は「C:\」等の  様に自分が現在作業しているディレクトリのことです。

noname#786
質問者

補足

>「同じ名前のコマンドがあれば、MS-DOSが最初に見つけた方の >コマンドが実行されてしまうんでしょうか? 」については >そう考えて良いと思います。 ということは、あまりむやみにPATHを通さない方がいいという事 でしょうか。あまりPATHを通すと、それだけ同じ名前のコマンドが 出てくる可能性も高くなるから、誤動作(?)の可能性も 高くなるとかあるんでしょうか?

関連するQ&A

  • バッチファイルで環境変数が設定されません

    よろしくお願いいたします。 Windows XP Pro の command.com において、バッチファイルの中で set コマンドを使って環境変数を設定しても、バッチから抜けると環境変数の設定ができていません。 バッチ終了後の環境変数は全てバッチ開始前と同じ状態です。 command.com のプロンプトで set コマンドを実行すると、環境変数はセットした内容に変化もしくは追加されます。 cmd.exe ではバッチからでもプロンプトからでも set コマンドで環境変数を操作できます。 なぜ command.com 上のバッチから操作できないのかわからず、不便でかないません。 アドバイスをよろしくお願いいたします。 @echo off set foo=word path=c:\ echo %foo% echo %path% 上記バッチを実行すると word c:\ と表示されますが、set コマンドで確認すると FOO は存在しません PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;... と表示されます。 これはバッチ実行前の値です。

  • 環境変数の設定

    PC(WinME)にjavaの開発環境を入れようと、java入門書に付随していた CD-ROMからJDKをインストールしたのですが、MS/DOSプロンプトから 環境変数の設定の有効を確かめようとするのですがMS/DOSプロンプトで c:\WINDOWS> ↑のあとにjavacと打つと、「コマンドまたはファイル名が正しくありません」と 出てしまいます。どうしたらよいのでしょうか? c:\autoexec.batは、以下の通りです。 SET windir=C:\WINDOWS SET winbootdir=C:\WINDOWS SET COMSPEC=C:\WINDOWS\COMMAND.COM SET PROMPT=$p$g SET TEMP=C:\WINDOWS\TEMP SET TMP=C:\WINDOWS\TEMP SET PATH=C:\SDK1.3.1\bin;%PATH%(ここだけ入力しました。) わかる方いましたらよろしくお願いします。

  • Javaの環境変数設定について。

    はじめまして。OSはWindowsXPでJavaの勉強をしようと思い、「JDK 5.0 Update 16」をインストールし、環境変数の設定を行ったのですが、PATHにもともと環境変数があったのに、間違えて新しい環境変数に変更してしまいました。コマンドプロンプトで「jsvac」コマンドを打ち込んだら C:\Documents and Settings\takumi>javac 'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出ました。 環境変数を元に戻す方法はないのでしょうか? どなたかご教授お願いします。

    • ベストアンサー
    • Java
  • 環境変数設定で

    senの環境変数を設定する場合、マイコンピュータを右クリックして、環境変数選択して、SEN_HOMEをつくり、 そこにC:\sen-1.2.2.1としました。 次にpathに%SEN_HOME%\binとしました。  そしてコマンドプロントでsh sen.shとしても'sh' は、「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」とエラーがでます。  antは同じ要領でできたのですが・・・

    • ベストアンサー
    • Java
  • システム環境変数が保存されない?

    質問させて下さい。 set Path=%Path%;C:\*** というコマンドをバッチファイルにして実行しているのですが、マイコンピュータのプロパティからシステム環境変数を確認してもセットしたはずのパスが登録されていません。再起動しても同様です。ちなみにシステムアカウントで実行しました。 上記のコマンドは一時的にセットするもので、永久保存するコマンドは別にあるのでしょうか? 宜しくお願いします。

  • 環境変数 PATH を消してしまいました...

    javaのPATHを通そうと設定をしたのですがコマンドプロンプトで認識されていないことが 分かり、設定を色々替えていたところ、PATHと言う項目自体消えてしまいました。 ●●のユーザー環境変数(上部のウインド)には項目がなかったのですが、新規で追加を してみたのですが、上手く動かずそちらも削除してしまいました。 システム環境の変数(下部のウインド)に元々色々な文字が入っていた物を消してしまい シャットダウンをする時や立ち上げる時、プログラムを削除する時に『●●が見つからなかった ため....』と小窓が開いてしまいます。 それを調べたところ、PATHを消してしまったことが問題のようだと分かったのですが解決の 方法が分かりません。ほとんど分からないのに色々いじりすぎたことを反省しています。 どなたか教えてください。 宜しくお願いします。

  • システム環境変数の設定

    通常、コントロールパネルのシステムにて設定するシステム環境変数(PATH)を、バッチファイルからコマンドを使用して設定したいのですが、何か良い方法は無いでしょうか?

  • Javaの環境変数が設定出来ません

    JDKインストール後、コマンドプロンプトでjavacの確認を行った所、 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と出ます。 システム環境変数の設定は 変数:Path  値:D:\java\jdk1.6.0_25\bin; 変数:JAVA_HOME 値:D:\java\jdk1.6.0_25 JDKをインストールしたフォルダは「D:\java\jdk1.6.0_25」なのですが、 コマンド:Pathでは「D:\java\jdk1.6.0_25\bin;,」 コマンド:Set JAVA_HOMEでは「JAVA_HOME=D:\java\bin」 と表示されます。 アドレスに間違いはないような気がするのですが・・・何故でしょうか; どなたかお願いします

  • 環境変数について

    ◇環境変数をセットしたい場合 WindowsXPを使っています。 コントロールパネル-システムの環境変数から設定しましたが、 ログオフや再起動しないと反映されないのでしょうか? ユーザー環境変数やシステム環境変数の違いも影響有るのでしょうか? AA C:\ PATH %AA%;として、%で括れば、登録済みの環境変数も使えるのでしょうか?

  • javaの環境変数設定

    java初心者です。コマンドプロンプトでjavacやjavac -versionと入力しても、 「javacは内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」と出てしまいます。 環境変数の設定でどこか間違っているのでしょうか? 変数PATH  変数値C:¥Program Files¥Java¥jdk1.8.0_60¥bin 変数値はエクスプローラからアドレスをコピーしたし、jdk1.8.0_60¥binにjavac.exeがあることも確認たので、これ以上どうしたらいいか分かりません。 osはwindows10です。