環境変数って何でしょうか?

 アプリケーションプログラムやバッチプログラムに対して、ユーザーが設定する変数。環境変数の設定には、MS-DOSのSETコマンドを使用する。COMMAND.COM自身が利用する環境変数としては、COMSPEC、PATHがある。

とありますが意味がわかりません。
「ユーザーが設定する変数」の「変数」って?
環境変数が何なのか教えて頂けないでしょうか。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (7件)

はじめに


yami_stさんへ
回答以外のことでの書き込みお赦し下さい。

Ryowさんへ
すいません。余計なことなんであまり気にしないで下さい。

飽くまでもこれは自分の意見というだけであり、
RyowさんはRyowさんの意見があるわけで
色々な人の意見が有っていい、というより寧ろ有るべきと自分は考えます。

自分の回答本文にもありますが
「皆様それぞれにお考えがあるかと存じます。
結局は、聞く側がどの様に判断するかということですが。」

自分が言いたかったのは「結局は~」以降の
それら様々な方々の意見のを聞く側の方がどう受け止めるか
情報の海から真贋を見極めるという
聞く側の情報の取捨選択が重要であると考えています。
    • good
    • 0

akishizumaさんへ



大変失礼いたしました。
言葉が過ぎましたことをお詫びいたします。

プログラムを開発されている方の立場を無視した発言、恥ずかしく思います。
    • good
    • 0

失礼とは存じますが、助言とちょっと意見を。



>あまりPATHを通すと、それだけ同じ名前のコマンドが
>出てくる可能性も高くなるから、~
>大体、同じファイル名の、全く動作の違うプログラムなど、
>ウィルスでもない限りは作られることはありませんから。
>若し、そんなプログラムに遭遇したというのなら、
>プログラムの作成者に文句言ってください。

残念ながらUNIXとかWINDOWSでもよくあります。

UNIXとかなら使用するユーザ(グループ毎のときもありますがここでは
簡単にひとくくりにします)により
環境を変えてユーザ毎に参照パスを変えることはよくあります。
UNIX/WINDOWS系にかかわらず
同一コマンド名で元のプログラムの機能に拡張性を持たせたプログラム作って
自分のが使うときは其方を参照するようにパスをきるなんてよくやってました。
最近のユーザはやらないのかなぁ。
DOSの頃なんて、MS-DOS3.3Dと5.0のCOMMAND.COMをスイッチングして
使ってたけど...。
過渡期のOSでは同じファイル名で違うユーザインターフェースなんて
ざらじゃないかなぁ。

確かに事実おっしゃられるような悪意有るプログラムも
最近非常に増えてきています。
ですが、結局はこれに限らず使う側がどの様に使うか、どの様に対処するか
なのではないでしょうか。

「同じファイル名の、全く動作の違うプログラムなど、ウィルス云々
そんなプログラムに遭遇したというのなら、プログラムの作成者に文句言ってください。」
というのは如何なものでしょうか。

皆様それぞれにお考えがあるかと存じます。
結局は、聞く側がどの様に判断するかということですが。

簡単な例をひとつ
WINDOWS系のある環境に於けるDLLファイルについて
プログラマーさんが2人いました。
それぞれが、便利なあるプログラムA.EXEとB.EXEを作りました。
A.EXE、B.EXEからよばれるC.DLLがあります。
C.DLLは他から提供されているものなので改竄は出来ません。

Aさんの環境にはC.DLLはVer.1が入っています。
Bさんの環境にはC.DLLはVer.2が入っています。
2人それぞれの環境は特に問題なく動いています。

2人はフリープログラムとしてそれぞれのプログラムを公開しました。
勿論、指定するバージョンのC.DLLを使用する旨の注意も怠り無くしています。

ここで、Cさんがこれは便利だとA.EXE、B.EXEを使用し始めました。
Cさんの環境はBさんの環境に酷似していて、既にC.DLLのVer.2が入っています。
B.DLLのVer.2はB.EXEの使用においては支障が無いのですが
A.EXEでは上手くいきません。
そこで、C.DLLのVer.1をA.EXEのカレントにおきました。すると上手く動きました。

後日談
UNIX系ではよくあることですが、WINDOWS系ばりばりのCさんは
C.DLLが2つあるのは気に入りません。
そこでCさんAさんにC.DLLをVer.2にして開発して下さいとメールをしました。
しかし、Aさんからは丁重にお断りのメールが来ました。

というのも、
その方がC.DLLをVer.2にする為の環境を与えて呉れるでしょうか
環境をそろえる為の金銭を出すでしょうか。
いいえ、与えて呉れませんし金銭を出してくれません。
そこで、自分は丁重にお断りしました。
    • good
    • 0

>。

あまりPATHを通すと、それだけ同じ名前のコマンドが 出てくる可能性も高くなるから、

同じ名前のコマンドと言うのは同じ動作をするものであって、故意に名前を変えたりしない限りは問題は発生しません。
但し、コマンド自体のバージョンが違っていると正常に動作しないアプリケーションもありますので、複数のバージョンが存在するコマンドについては、可能な限り最新の物に置き換えておくといいでしょう。
(多くの場合、新しいバージョンのコマンドは、それまでのバージョンを内包しており、ほぼ問題なく動作します。)

また、「*.exe」と「*.com」、「*.bat」がある場合、ファイル名が同じであれば、拡張子を付けてやる必要があります。
逆に言えば、コマンドラインで拡張子を付けて実行してやれば、誤動作は無いとも言えます。

大体、同じファイル名の、全く動作の違うプログラムなど、ウィルスでもない限りは作られることはありませんから。
若し、そんなプログラムに遭遇したというのなら、プログラムの作成者に文句言ってください。
    • good
    • 0

環境変数というのは、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:\」等の
 様に自分が現在作業しているディレクトリのことです。

この回答への補足

>「同じ名前のコマンドがあれば、MS-DOSが最初に見つけた方の
>コマンドが実行されてしまうんでしょうか? 」については
>そう考えて良いと思います。

ということは、あまりむやみにPATHを通さない方がいいという事
でしょうか。あまりPATHを通すと、それだけ同じ名前のコマンドが
出てくる可能性も高くなるから、誤動作(?)の可能性も
高くなるとかあるんでしょうか?

補足日時:2001/08/19 16:29
    • good
    • 0

環境変数というのは、Windowsの前身MS-DOS等で使われていた一種の隠し技のようなものですが、これを説明する前に『変数』を説明したほうが良いでしょうか?


この場合の変数というのは数学で言う変数と似ています。

例えば、
y=2x+3(2や3は定数・x、yが変数)です。
ちなみにπ(パイ)は3.141592・・・・で定数として扱われるんじゃなかったですかね。
このように一つの名前(xやy)で表されるが、内容は利用者の自由に割り当てる事が出来る物を変数と言います。

環境変数の場合は、数限りなく存在するシステム構成の違うマシンで共通して、MS-DOSやwindows、アプリケーションを使うためにシステムの違いを共通の変数に置き換えて実行するために用意されていますので、値が数値とは限りません。

分かり易いのは、昔のNECのPC-98系のマシンでは、systemdrive(システムドライブ・OSが入っているドライブ)がA:でしたが、他のマシンではC:でした。これは今でも殆どのWindows系のマシンではそうですね。
この違いを上記に有るCOMSPECやPATHという環境変数は吸収してくれています。

お分かりいただけたでしょうか?

参考URL:http://www2.startshop.co.jp/~68user/unix/environ …
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2001/08/19 21:23

変数とは、変えることが出来る数です。

xとかyとか。

MS-DOSは、基本的にコマンドがカレントディレクトリ(今開いているディレクトリ)に無ければ実行出来ません。
しかし、いちいちディレクトリを移動していたら大変です。MS-DOSがコマンドの位置を把握してくれていたら、ユーザはいちいちディレクトリの変更をしなくてもすみます。
PATHを設定しておくと(ユーザが自由に設定することができます)、MS-DOS(command.com)はPATHで設定されたディレクトリを順番に探して、要求されたコマンドが見つかればそれを実行してくれます。このPATHが「環境変数」です。つまり、「環境変数」は「プログラムが動作する環境についての変数」です。

この回答への補足

PATHを複数、設定した場合、PATHで設定された全ディレクトリの内、
同じ名前のコマンドがあれば、MS-DOSが最初に見つけた方の
コマンドが実行されてしまうんでしょうか?

そもそもコマンドというのが何かよく分ってないんですが・・。
命令とかそういう意味合いのものという事しか
分らないです。

それと、新たな質問になってしまうので
別の機会にした方が良いのかも知れませんが・・
もしよければ教えて下さい。
「COMMAND.COM自身が利用する環境変数」って
どういうことでしょうか?
MS-DOSは実行する本体?だから環境変数とかは
意味がないのでは?

補足日時:2001/08/19 01:31
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QDOSのバッチで、変数中のファイル名を取り出すには

DOSのバッチの初心者です。
$FILEという変数に、
C:\Documents and Settings\Administrator\My Documents\okwave.txt
のようにファイル名がフルパスで入ってくるとします。このファイル名だけ(okwave.txt)を別の変数に入れたいのですが、うまくいきません。

set f=%$FILE%
set g=%%~nf
echo %g%

上のように書いてみたのですが、変数gは%~nfという値が入ってしまいます。どう直せばよいでしょうか。

Aベストアンサー

> set f=%$FILE%
> set g=%%~nf
> echo %g%

 上のスクリプトは、下記に載っているような、バッチファイルのパラメタ修飾子を参考になされたと、思います。
 http://ykr414.com/dos/bat.html#05

 これらは、バッチファイル起動時に与えられたパラメタに対する修飾子であり、バッチ変数に対するものではありません。

 ここでは、 batch01.bat と batch02.bat という二つのスクリプトを作成します。
 batch02.bat では、

@echo off
echo %~n1%~x1

 batch01.bat では、

@echo off
call test02.bat "%$FILE%"

 以上のようにすれば、 $FILE 変数が batch02.bat の第一パラメタとして与えられるので、これをパラメタ修飾子で分解すれば、ファイル名だけを取り出すことができます。

QDOS/V機用ワープロソフトfor Dos

私は今WindowsXP(マルチメディアやネット関係に使用)とWindows98用(ワープロや表計算に使用)のパソコン計2台を使用しています。
Windows98のパソコンはメモリも少なく(32MB)、起動にも非常に時間がかかる為、ずーとストレスを感じながら使用していました。
で、とある中古パソコン屋さんでIBMのDos時代のパソコンに触れる機会がありました。起動やソフトの立ち上げを見てビックリ!画面はさすがに古さを感じますがシンプルかつ基本的にマウスを使わない操作に心奪われました。でDosを勉強するとともにワープロ中心とした、凝らない・シンプルなPC使用を考えるようになりました(ただし、動画や音楽、ネットなどはXP環境でもいいので、XPパソコンはそのまま使用することにします)。
OSはPC-Dos2000というのがまだ売られているようなので購入、印刷はまだ現役使用中のCanonBJC455JがDosでも印刷可能なのでこれを使用し、Win98パソコン(NECではありません。PC/AT互換機です)を初期化してDos環境を作ろうと思っています。
問題はワープロソフトなんです。ネットオークションを見るのですがDos用ワープロ(一太郎や松など)は全てNEC98用です。使えません。どんなワープロソフトでもよいのですが、Dos/v機対応のワープロを探しているんです。エディタがあるじゃないかと思われるかもしれませんがエディタは嫌なんです・・・変にこだわりますが・・・
で、もしよければ教えていただきたいんです。

(1)PC/AT互換機で動作するDos用ワープロソフトはそもそも存在したのか?(ネットで調べる限り全てPC98用ばかり)あ!もちろん3.5インチFD用です(5インチ用ならあると言われても…)
(2)存在するのであれば現在購入できるのか?もし無理ならオークションで出品されるのをずーと待つしかないのか?中古ソフトを扱うネット上の店はないのか(私関西の田舎にすんでいるので)。

すみません、長々と喋りまして。

私は今WindowsXP(マルチメディアやネット関係に使用)とWindows98用(ワープロや表計算に使用)のパソコン計2台を使用しています。
Windows98のパソコンはメモリも少なく(32MB)、起動にも非常に時間がかかる為、ずーとストレスを感じながら使用していました。
で、とある中古パソコン屋さんでIBMのDos時代のパソコンに触れる機会がありました。起動やソフトの立ち上げを見てビックリ!画面はさすがに古さを感じますがシンプルかつ基本的にマウスを使わない操作に心奪われました。でDosを勉強するとともにワープロ中...続きを読む

Aベストアンサー

管理工学研究所の「松」もdos/v判があり、持っていました
IBMのPC-DOSで800X600の画面でつかえましたので
NEC98より広い画面でが、当時のパソコンの性能ではDOSの
テキスト画面はNEC98の方が軽快に使えましたので結局あまり
つかいませんでした

もともと当時は「一太郎」に押されていたのでDOS/V判は
あまり売られていないと思うので中古でも
今入手するのは困難でしょうねえ

Qバッチファイルでできることとバッチファイルの作成方法

主に、バッチファイルの作成方法をお聞きしたいのですが、
できればバッチファイルの活用法なども教えてください。
宜しくお願い致します。

Aベストアンサー

うってつけのホームページがこちら・・・・

参考URL:http://www25.cds.ne.jp/~kamiken/bach/bach.html

Q環境変数について

どこかからリンクを辿ればそのリンク元が出ますが、
たとえばあるページを見ていて、お気に入り(ブックマーク)から、あるいは履歴から直接指定した場合はさきほどまで見ていたurlが変数情報に表示されることてあるのでしょうか?また環境変数が出ていくのはどのようなタイミングなのでしょう?
というのはネットに繋いだときからなのか?あるアクションを起こした時なのか?が知りたいです。またそれはOSによって違いがあるのかということも知りたいです。素朴な疑問です…

Aベストアンサー

> お気に入り(ブックマーク)から、あるいは履歴から直接指定した場合はさきほどまで見ていたurlが変数情報に表示されることてあるのでしょうか?

ブラウザの仕様によります。
普通吐き出さないように作ってあると思います。
(未確認なので自信なし)
# 吐き出されると受け手は困ってしまうはずだし。

> また環境変数が出ていくのはどのようなタイミングなのでしょう?

ページリクエストを送出する時に、リクエストのヘッダー
として送り出します。ちなみにhttpdが環境変数として扱っ
ているだけで、やり取りされているのはヘッダーです。

> それはOSによって違いがあるのかということも知りたいです。

OSではなく、ブラウザソフトに依存します。

marimo

QMS-DOSから設定するパスワードについて...。

何らかの本を見ながら、スタートアップメニューからdos自体を操作して、コンピュータの電源をつけてすぐにパスワードを立ち上げるように設定をしたのですが、最近になってそれを取り消そうと思い、本を探したのですが見つからないので困っています。
どなたかその操作の仕方を知っている方は教えていただけないでしょうか?
それと僕は、パソコンを始めたばかりなので細かい操作がよく分りません。なので、どうか初心者の僕でも分る説明でお願いします。

Aベストアンサー

それはdosでなくBIOSの話ではないですか?
「スタートアップメニューからdos自体を操作して」の部分ですが、これはWindowsの[スタート]ボタンから選んだメニューという意味ですか?
それともパソコンの電源を入れてた直後に何らかの操作をして表示されるメニューのことをさしていますか?
質問された方と回答者の間で用語の意味/解釈を合わせておかないとすれ違いになって、いつまで経っても解決にゆきつかないのはよくあることです。
それから、この件ではパソコンのメーカー、機種、型番も書いたほうがいいかもしれません。
この段階では未だなんともいえませんが・・・・


このカテゴリの人気Q&Aランキング

おすすめ情報