• ベストアンサー

パスの設定とかパスを通すって、どうも意味がつかめません・・・

例えばwindowsで使うgccの扱いで、私は「C言語のe本」というのを読んでいるのですがgccを使えるようにするために ダウンロードしたgcc-2.95-mingw32.zipを展開する時に、展開先をc:\gcc-2.95として展開し、その後windowsXPのコントロールパネル→パフォーマンスとメンテナンス→システム→詳細設定→環境変数→システム環境変数からPath→そこに;c:\gcc-2.95\binを追加してOKとのことで 確かにその通りにしたらコマンドプロンプトでgccと入力するとなんか答えてくれるようになりました。 でも、これがどういうことか意味がわからなくて気持ち悪いです。そもそもbinというのをなんで指定してるのかが何か分からないし、パスを通すって何をしたんだろうと。 それからFreeMat(MatLabと互換性があるフリーソフト)も興味からいじっているのですが、Path toolというものでパスを設定するようです。それを起動するとディレクトリを追加するような画面が出てきます。パスって何かを知っていれば適切なディレクトリを選択できると思いますし、結局、「パスを通す」って何かわからないので全然応用がきかないんです。 このあたりのこと詳しい方がいたら教えていただけませんか? ちなみに「c言語のe本」では、「インストールしたgccが、どこにあるのかコンピュータに教えてあげるための作業だ」と書いてあって、意味がわかりませんでした(汗)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

先ず、Windowsという物をパソコンだとかOSだとか いう物では無いと思ってください 通常パソコンでソフトウエアを起動させる場合は そのソフトウエアが保存されているディレクトリ(フォルダと言った方がいいですか?) に移動しないと起動できません パソコンを使用している場合必ず どこかのディレクトリ上で操作をしていることに成るのですが 作業ディレクトリと保存のディレクトリは別の場所になっています ソフトウエアを起動する際 本来で有ればその保存されているディレクトリに 移動して起動すれば済むのですが (CUIであれば そうしているはず) GUIの場合そういうわけにもいきません ※ディスクップの表示を終了しコマンドプロンプトを出して ディレクトリを変更して起動すれば済みますが ちなみにWinの場合使用者は常に各ユーザのディスクトップ のディレクトリに要る事になります。(移動は出来ません 窓を開いて別のディレクトリを表示させる事は出来ます) まぁ どう考えても面倒な作業になります。 そこで考え出されたのが 「そのコマンドが打たれたら、自分が今何処のディレクトリで作業していようが 何処のディレクトリのプログラムを起動しなさい」 と言う仕組み これがパスです ※実際は何かコマンドが打たれ、今要るディレクトリに対応するソフトウエアが 無ければ 何処のディレクトリを探す の指定ですが で、「何処のディレクトリだよ」と指示することを パスを通すと言う事に成ります。

rabitwo
質問者

お礼

易しい説明でありがとうございます。 ソフトウエアはそのソフトウエアが保存されているディレクトリに移動しないと起動できないのですね。それからパソコンを起動していれば必ずどこかのディレクトリにいるということわかりました。CUIのイメージです。 Windowsの場合は使用者は常に各ユーザのディスクトップのディレクトリにいるんですか。移動もできない。これは目からうろこです!! グラフィカルなのでそんなこと考えたこともありませんでした。 それで、パスとは、自分が今何処のディレクトリで作業していようが 何処のディレクトリのプログラムを起動しなさいと言う仕組みとのこと、だいぶわかってきました!!

その他の回答 (5)

回答No.6

>では、カレントディレクトリをgcc.exeのある場所に移動すれば、これまた環境 >変数の設定をしなくてもgccコマンドが使えるわけですね!! 確かにそう。 でも、それは「gcc.exeのある場所」つまり「gccのインストール先」に、コンパイルしたいソースファイルなども置き、そこでコンパイル作業をするって事になるし、カレントディレクトリを移動する作業は「毎回、必要」になる。 「gccのある場所を明示してgccを起動」も「カレントディレクトリをgccのある場所に移動」も「毎回」か「最初の1回」は、gccのある場所を手で打ち込まなきゃならない。 でも、Pathに書いておく作業は「書き足すのは1回だけ。2回目以降は何もしなくて良い」ので、2度書く必要はない。 それに、物によっては「コンパイルする際のカレントディレクトリを、特定のフォルダに指定される場合」があって、gcc.exeのある場所をカレントディレクトリにする訳にいかない場合もある。 確かに、ポットが置いてある台所の流し台の前でなら「ポットが目の前にある」ので、ポットが見付からないとかって怒られる心配はない。 だけど、それだと「ポットが置いてある台所の流し台の前で、カップ麺を立ち食い」しなきゃならない。 それ以前に「いま居る場所から、ポットが置いてある台所の流し台の前まで移動しなきゃならない」のも手間がかかる(「カレントディレクトリを変更するのさえ手間」って事) カップ麺みたいに片手で持って立ち食い出来るなら良いけど、もし、ご飯と味噌汁とオカズとサラダと付け合わせの惣菜を別々の食器に盛り付けて出されたら、台所の流し台の前で立って食べる訳にいかない。 食堂の食卓に座り、そこで「食べるので、お箸をください」って言わなきゃならない(そしてそう言うと「ここにはお箸がありません。お箸のある場所が判りません」って怒られちゃうわけだが) それに、カップ麺だって、テレビのあるリビングで見たい番組を見ながら食べたい。 そんな訳で、やっぱり「ポットの場所」や「お箸が置いてある場所」や「マヨネーズのありか」や「醤油さしの置き場所」を、事前にちゃんと教え込んでおいてから、食卓やテレビのあるリビングで食事をする事になる。 >ポットがどこにあるかをあらかじめ、どこかに書いておけば、ポット持ってこいって言われたら、それを参照すればすぐわかりますね。 >コンピュータは言われたとおりの処理しかしないから、参照するものがなかったら毎回どこにあるかも指示しなければならないわけだ。 そういう事。 「探す場所リスト」に「台所の流し台の右のポット」とか「食器棚の右側の扉を開けて下から2段目の箸立ての中」とか「冷蔵庫の右側のドアの一番上」とか「台所の調味料入れの一番左」とか書いておけば「お湯欲しい」って言えばポット持って来るし「お箸が要る」って言えば箸立ての中からお箸持って来るし「サラダにマヨ欲しい」って言えば冷蔵庫のドアからマヨ持って来るし「あ~、醤油忘れた」って言えば調味料入れの左端の醤油さしを持って来きてくれる。

回答No.5

貴方がコマンドプロンプトで gcc と打ち込むと、コマンドプロンプトは「cgg.exeをどこからか探し出してきて、見付かったgcc.exeを起動する」ようになっています。 この「コマンドプロンプトが探す場所」は 1.カレントドライブのカレントディレクトリ 2.環境変数「Path」に書いてあるディレクトリを先頭から順に となっています。 で、1や2の場所に見付からないと「コマンドまたはファイル名が違います」とエラーになります。 特に、2の「環境変数『Path』に書いてあるディレクトリ」に「gccがある場所」を足さない場合には「gccのある場所を明示して起動」しなければなりません。 貴方は「展開先をc:\gcc-2.95として展開」したのですから、gcc.exeは「c:\gcc-2.95\」に居ます。 つまり「gccのある場所を明示して起動」するには、コマンドプロンプトで c:\gcc-2.95\gcc と打ち込まなければなりません。 それが面倒なら「コマンドプロンプトが打ち込まれたコマンドを探す場所にc:\gcc-2.95\を追加して、c:\gcc-2.95\にgcc.exeがある事をコマンドプロンプトに教えてあげる必要」があります。 その作業が >コントロールパネル→パフォーマンスとメンテナンス→システム→詳細設定→環境変数→システム環境変数からPath→そこに;c:\gcc-2.95\binを追加してOK と言う作業です。 ポットがどこにあるか知らない人に「カップ麺食うからポット持って来てくれ」って言ったって「ここにはポットがありません。ポットがどこにあるか判りません」って返事しか返って来ません。 事前に「廊下の突き当たりの左のドア入って右の台所の、台所の流し台の右に、白いポットが置いてある」って言うのを「覚えさせて」おかないと、毎回「カップ麺食うから、廊下の突き当たりの左のドア入って右の台所の、台所の流し台の右に、白いポットが置いてあるから持って来て」と言うように「ポットの位置を、毎回、いちいち指示しなきゃならない」のです。 そんなの面倒だから、普通は「ポットの場所を覚え込ませる」のです。

rabitwo
質問者

お礼

易しい説明ありがとうございます。 「コマンドプロンプトが探す場所」というのは 1.カレントドライブのカレントディレクトリ 2.環境変数「Path」に書いてあるディレクトリを先頭から順に なのですね。 では、カレントディレクトリをgcc.exeのある場所に移動すれば、これまた環境変数の設定をしなくてもgccコマンドが使えるわけですね!! ポットがどこにあるかをあらかじめ、どこかに書いておけば、ポット持ってこいって言われたら、それを参照すればすぐわかりますね。コンピュータは言われたとおりの処理しかしないから、参照するものがなかったら毎回どこにあるかも指示しなければならないわけだ。

  • precog
  • ベストアンサー率22% (966/4314)
回答No.4

MS-DOSやUNIXのシェルから入ってるとわかるんですけどね。 本来は実行ファイルを一意に特定するにはフルパスで入力しなければなりません。例えば >c:\gcc-2.95\bin\gcc.exe などというように。 しかしこれでは非実用的ですので格納ディレクトリーは省略できる仕組みを導入しています。 それがサーチパスです。指定されたディレクトリーが省略されたものとみなしてマッチするものがないか毎回探しに行きます。 実行ファイルを探すのにディスク全部をいちいち探さないといけないのだと起動が遅くなるので明示的に指定するようになってます。 GUIの場合は一意に結びついたショートカット (の中にフルパスが書かれている) で呼び出すのが通常なのでパスの設定は必要ありません。

rabitwo
質問者

お礼

ありがとうございます。 では、 >c:\gcc-2.95\bin\gcc.exe コンパイルしたいファイル名 とすれば環境変数に登録しなくても、パスを通さなくてもgccは使えるということですね!! GUIの場合は、例えばワードのアイコンをダブルクリックすることで、そのアイコンというか存在物にフルパスが書かれている部分があって、そのフルパスにしたがってワードの実行ファイルが動くという感じでしょうか。

  • nitho_t
  • ベストアンサー率49% (44/89)
回答No.3

コマンドプロンプトというプログラムに何かを指定してあげます。 それがコマンドプロンプトへの入力です。 例えば >readme.txt の入力は(普通)テキストデータの指定ですからプログラムは何をしたらいいのか分かりません。 そこで >コマンド (もしあれば)対象データ の形で処理を指定します。 そこで今度はコマンドとしてgccを指定します。 >gcc main.c 今度はgccの存在場所をコマンドプロンプトが分からないとgccを呼べません。そこでpathにその場所を書いておくと、コマンドプロンプトに書いてある場所にgccを探しに行きます。もしあればgccを起動し、データを引き渡すことになります。 コマンドプロンプトの立場になればpathで指定された場所のみが自分の必要な場所でそれ以外は関知しません。そこで、「インストールしたgccが、どこにあるのかコンピュータに教えてあげるための作業だ」という表現になります。 追記すれば、「パスを通す」とは環境変数pathにその場所を追加する作業を指します。

rabitwo
質問者

お礼

ありがとうございます。 コマンドプロンプトにgccの実行ファイルの存在場所を教えてあげることが「パスを通す」ということなのですね。 コマンドプロンプトで使うもののみなのでしょうか。

noname#94983
noname#94983
回答No.2

コマンドプロンプトから何かを書いてEnterすると、そのプログラムが実行される、ってのは、わかりやすくいうと、「入力された名前のプログラムを検索し、見つかったらそれを実行する」ということになる。 では、どこからプログラムを検索するのか。それが環境変数PATHになる。このPATHに設定されているフォルダの中を順に見ていって、プログラムが見つかれば実行する。だから、コマンドプロンプトから実行したいプログラムが入っているフォルダのパスをPATHに追加してやれば、次から入力時にその場所を検索するようになり、そこにあるプログラムが実行できるようになる、ということ。

rabitwo
質問者

お礼

ありがとうございます。 プログラムが実行されるというのは、 (1)入力された名前のプログラムが検索されるという過程と、 (2)それを実行するという過程、 があるのですね!! 分解して考えたことなかったです。 環境変数PATHは、プログラムを実行しろって命令があった時に探す場所が格納されている場所なのですね。 それにしても、あそこにはそんなにディレクトリがたくさん書いてなかった気がするし、ワードとか他のいろんなプログラムのは書いてない気もするけどなんで実行できるんだろう・・・。

関連するQ&A