• ベストアンサー

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

例えば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)

  • chie65535
  • ベストアンサー率43% (8522/19371)
回答No.6

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

  • chie65535
  • ベストアンサー率43% (8522/19371)
回答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

  • パスを設定する時、%PATH%の%は?

    パスやクラスパスを設定する時、本によって書いてあることが違います。 ある本には「環境変数パスに c:\j2sdk1.4.0\bin」を追加すると書いてあります。 他の本には、「c:\j2sdk1.4.0\bin;%PATH%」を追加すると書いてあります。 私のパソコンでは、前者の書き方で正常に動きます。そもそも、%PATH%というのは、どのような働きをするんですか? 又、%はどういう意味があるんですか? 誰か知っている人がいたら教えて下さい。よろしくおねがいします。 

    • ベストアンサー
    • Java
  • MinGWをXPにインストール後 DOSのipconfig など使えな

    MinGWをXPにインストール後 DOSのipconfig など使えなくなる 標記の通り、昨日MinGWというC言語の環境をインストールした。 それに応じてシステムの環境関数もいくつか追加した。下記: 1 MINGW_PATH=G:\MinGW 2 C_INCLUDE_PATH=%MINGW_PATH%\include;%MINGW_PATH%\lib\gcc\mingw32\3.4.5\include 3 CPLUS_INCLUDE_PATH=%MINGW_PATH%\include\c++\3.4.5;%MINGW_PATH%     \include\c++\3.4.5\mingw32;%MINGW_PATH%\include\c++\3.4.5backward;%C_INCLUDE_PATH% 4 LIBRARY_PATH=%MINGW_PATH%\lib;%MINGW_PATH%\lib\gcc\mingw32\3.4.5 5 PATH=%MINGW_PATH%\bin;%MINGW_PATH%\libexec\gcc\mingw32\3.4.5 そうしてから、DOSでipconfig 出来なくなるだけじゃなく、社内用のメールボクスも開けなくなる。 一体なぜか? どなたか教えていただきませんか

  • PATHの設定方法がわかりません。

    私、windows8でjavaの7u21をダウンロードして 開発環境を整えようとPATHの設定をしているのですが、 うまくいきません。変数値の後に 「;C:\java\jdk1.7.0_21\bin;」を追加しても、だめでした。 入門サイトには、 「今一度JDKをインストールしたディレクトリに含まれる「bin」ディレクトリが Pathに設定されているかどうか確認して下さい。」 とあるのですが、よくわかりません。 どなたかご教示頂けないでしょうか。

    • ベストアンサー
    • Java
  • PATHの設定について

    (1)システム変数の編集で変数名に「JAVA_HOME」を入力。変数値に「C:\j2sdk1.4.2_08」を入力しました。 (2)同じように「新規(N...)」をクリックし、変数名に「CLASSPATH」を入力。変数値に「.;%JAVA_HOME%\lib\tools.jar」を入力しました。 (3)「システム環境変数」の「変数」の中にある「Path」に「;%JAVA_HOME%\bin」を追加しました。 コマンドプロンプトでpathと入力し確認したところ、 C:\j2sdk1.4.2_08\bin\binというpathは通っていました。 しかし、javacを起動させようとすると、 'javac'は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。 と表示されてしまいました。 この場合、どうすればjavacが使えるようになるのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • Java
  • perlとcygwinをインストールしてwindowsにPathを設定

    perlとcygwinをインストールしてwindowsにPathを設定しようとしましたが、 ユーザーの環境変数を C:\cygwin\bin\; C:\xampp\perl\bin\; のように設定しましたが、コマンドプロンプトからは実行できませんでした。 システムの環境変数に追加しようとしましたが、 Pathがいっぱいで追加できませんでした。 Pathがいっぱいの場合、どのように追加したらいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • システム環境変数Pathについて

    borland C をインストールしたあと、システム環境変数PathにC:¥bcc55¥Bin;を追加するところを誤って、すでにあるパスを消してしまいました。 どうすればいいでしょうか?

  • 教えてほしいのですが

    またまた質問したいのですがVisual Stdio C++では1つのプロジェクトで1つのプログラムしか作れないっぽいのでjavaでしようしているeclipseにC言語を導入できるということでそちらでやろうと思っています。 Eclipse C/C++ Development Tooling - CDT、日本語化、コンパイラとしてMinGWをインストールするまではできたのですが、いざデバッグしようとしてビルドすると **** プロジェクト C言語 の構成 Debug の ビルド **** **** 内部ビルダーがビルドに使用されます **** gcc -O0 -g3 -Wall -c -fmessage-length=0 -osample.o ..\sample.c ar -r libC言語.a sample.o プロジェクト C言語 のビルド完了 Time consumed: 429 ms. と表示され、そのままデバッグしようとすると 起動に失敗しました。バイナリーが見つかりません と出てきてしまいます。 一応MinGWの設定方法を調べて設定したのですがおそらくPATH設定でミスがあると思っています。 現在PATHの環境変数はC:\Program Files\Java\jdk1.6.0_13\bin となっています。 調べると C:\MinGW(ここにインストールしました)\binを追加してくださいと書いてあったので 環境変数→新規→PATH:C:\MinGW\bin としたところeclipseじたいが起動しなくなりました。 どうすればいいですか? うまくeclipseでCが実行できるように教えていただきたいです。 質問がだらだらと長くなってしまってすみません。

  • パスを通したはずなのに「パスは見つかりません」

    お世話になります。始めてプログラミングを勉強しています。 環境はWindws XPHome Edition Ver2002、SP2 コンパイラとしてダウンロードしたのは、 「Borland C++compiler」です。 インストールして、pathの環境変数の最後にbin;c:\Borland\Bcc55\binと付けました。 もとの環境変数↓ (%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Common Files\GTK\2.0 )  実際コマンドラインでメモ帳を開こうと>C:\WINDWS\NOTEPAD.EXEと打ち込んでも、 指定されたパスは見付かりませんとでます。 確かにCドライブの「WINDWS」フォルダの中にNOTEPAD.EXEは存在します。 他にもカレントディレクトリを変えようとして、>cd ○○と打っても、 確かにあるはずなのに「指定されたパスはみつかりません」になってしまいます。 打ち込んだ文字や環境変数に加えた文字に間違いはないかと、かなり確認したり似たような質問を検索してみたのですが、どうも分からずお手上げ状態です。 よろしければ教えていただけないでしょうか。 ちなみに「10日でおぼえるC言語」というテキストどおりにやっています。

  • eclipseでC言語がコンパイルできない

    cigwinを先日入れてeclipseでC言語開発をしようと思ったんですが、 Hello Worldを実行しようとすると、 ・Program "g++" not found in PATH ・Program "gcc" not found in PATH というエラーがでます。 gcc,g++がPATHにないよ、といっているようですが、 これはどのように解決したらいいのでしょうか? cigwinでgcc,g++の場所を確認すると/usr/bin/gcc, /usr/bin/g++とありました。 インストールはされているようです。 環境変数の方もシステム環境変数、ユーザ環境変数両方に、 C:\cygwin\bin;C:\cygwin\usr\bin;C:\cygwin\usr\local\bin と指定しています。 何かPATHの設定を間違っているのでしょうか? それともeclipseの設定でしょうか?

  • javaのpath環境変数がうまくできません

    path環境変数がなかなか設定できません。 『システム変数の編集』で どうも設定を間違っているらしく、 C:\j2re1.4.2\binを追加するのに 前にあったはずの、C:\WINDOWS~~~ を削除してしまって、なんて入れれば環境変数が うまくできるかわからなくなってしまいました。 誰かお願いします。

    • ベストアンサー
    • Java