はじめに
こんにちは.
Life is Tech ! Tokai版 Advent Calendar 15日目担当の12期映像メンターのじゃぱおです!
今日は、環境構築においてよくある**「パスを通す」**ということについて噛み砕いてみたいと思います.
いつも、環境構築の解説記事では普段言われた通りやっている人も多いと思いますが、その意味がわかっていることも非常に重要です.今回で「パスを通す」ということについて、プログラミングを始めたばかりの人でもわかりやすいように例を用いながら説明してみました!
この記事の対象者
- 環境構築でパスを通す時にいつもあまりうまくいかない人
- プログラムがどのように実行されているのかあまりわかっていない人
“プログラムを実行する”ということ
みなさんはソフトウェアを実行する時には、どのように実行しているでしょうか?
デスクトップのアイコンをダブルクリックしている人もいますね.
スタートメニューから希望のプログラムを実行している人もいます.
さらには自分で書いた Python
のmain.pyを実行する時には
$ python3 main.py
と白黒の画面に入力してプログラムを実行している人もいますね.
このように、様々な方法でみなさんはプログラムを実行しています.
しかし、実はこれら全て、内部ではほとんど同じ実行方法で実行されています.
“プログラムを実行する”ということは「どこかにおいてあるファイルにアクセスする」ということ
みなさんが主に使用しているWindowsやMac OXなどのOS(オペレーティングシステム)は基本的に ファイル
という構成単位で動作しています.ファイルには大きく分けてふたつの種類があります( http://kj01.kgu.mydns.jp/fujimoto/tips/extension.html ).
-
プログラムファイル
---Google Chrome
、Python
、Xcode
, etc... -
データファイル
--- Word文章、TeXファイルのほか、XXX.pyやXXX.javaもこれに含まれます(プログラム文を記述したファイルそのものだけではプログラムを実行することはできません、コンパイル
という作業をしてプログラムファイル
を生成して初めてプログラムと言える物になります)
プログラムファイル
は、コンピュータ上で動作することのできる手続きを記述している物、データファイル
はユーザがプログラムファイル中で利用する情報を記録するためのファイルとなります.
難しい話ではありません.
これらの全てファイルは、コンピュータ上のファイルシステム
のいずれかの位置に必ず格納されていてます.必ずです.
Windows
の場合にはエクスプローラー
、Mac OS
の場合にはFinder
というOS(オペレーティングシステム)に備わっている「ファイル
というものを一覧表示することができるプログラム」を使用すると覗くことができます.
それらのファイルにアクセスするには、「家の住所」に相当するパス
というものを指定してアクセスします.みなさんの自宅がファイルとすると、その住所を指定すれば目的の家にたどり着けることと同じです.
// WindowsでGoogle Chromeのプログラムファイルを指定する例
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
// Mac OSでGoogle Chromeのプログラムファイルを指定する例
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
さて、少し話が長くなりましたが、題名を思い出してみてください.
“プログラムを実行する”ということは「どこかにおいてあるファイルにアクセスする」ということ
基本的にプログラムを実行する時には次の流れで実行します.
-
プログラムファイル
がファイルシステム
のどこにあるかを調べる -
プログラムファイル
の住所であるパス
を調べる - OS(オペレーティングシステム)に教えてあげる
という流れでプログラムを実行することになります.
もしあなたがGoogle Chromeのプログラムを起動したい時、上記に示した“住所”の現地に赴いて、呼び鈴を鳴らす必要があるということです.
実際に住所をOS(オペレーティングシステム)に伝えて、プログラムを実行してみましょう.
自分でプログラムファイルのパスをWindows
ならコマンド プロンプト
、Mac OS
ならばターミナル
でそのパスをコピーしてEnterを押してみてください.
コマンド プロンプト
やターミナル
と呼ばれるものは、起動したいプログラムファイル
のパスを入力するとそのプログラムを起動するようにOSに依頼することができます.
上記のGoogle Chromeのパスに存在するプログラムファイル
をOSに実行するように依頼したため、Google Chromeが起動しましたね.(それぞれの保存場所によりますがデフォルトは同じです)
今までデスクトップ上のアイコンをダブルクリックしていた人も、スタートメニューから選択していた人も、実はこのようにして、プログラムファイル
の位置をOS(オペレーティングシステム)に教えてあげて、希望のプログラムファイル
を実行していたということになります.
ちなみに、あくまでパスというのは、画像の格納位置をプログラムに教えてあげたり、Wordの[開く]からWordファイルを開くだけに使うのではないということは以上の説明からもお分かりだと思います.
毎回、長〜いパスを指定するのが大変だから「パスを通す」
さて、そろそろタイトルの答えにまいりましょう.
先ほどまで示したように、プログラムファイルというのは、あくまでとあるディレクトリに存在していて、プログラムを実行するというのは、そのプログラムファイルにアクセスするということです.
しかし、Google Chromeとか、Pythonとかは頻繁にアクセスしますよね?
毎回の実行ごとに
$ /usr/bin/python main.py //Macのターミナルの場合
$ C:\Users\username\AppData\Local\Microsoft\WindowsApps\python3.exe main.py //Windowsのコマンド プロンプトの場合
と打つのは大変です.
そこで、実行したいプログラムファイル
名(上記コマンドであれば python
となります)がありそうな箇所を予め登録しておこうというアイデアが「パスを通す」ということになります.
住所の例であれば、「住所を全て言わずにマンション名だけを指定した時、そのマンションがありそうな場所を予めメモに記して順番に回ってみよう」ということになるかと思います.「パスを通す」時には、そのメモに対してプログラムがありそうな箇所としてプログラムファイル
が存在しているディレクトリを登録することになります.
パスを通す実際のやり方(Windows)
Windowsの場合は非常に簡単です.設定から環境変数(いわゆるパスです)がGUIで設定できます.
参考:https://itlogs.net/windows-10-path/
パスを通す実際のやり方(Mac OSX Catalina以降)
MacはGUIを用いてパスを通すのはデフォルトでは不可能です.
また、厄介なことに多くのMacへの環境構築を解説している記事やインストーラーによって、プログラムファイル
がありそうな場所としてメモをする先が正確ではなく混乱を生むものがあります.(これは記事が悪いのではなく、Mac OSの仕様変更、シェルの種類の変更が理由です).Macにおいて環境構築を行う場合はなるべく最新の記事を参照する癖をつける必要があります.
vi ~/.bash_profile
vi ~/.bashrc
echo 'export PATH="$PATH:(プログラムファイルが存在するディレクトリ)"' >> ~/.bash_profile
echo 'export PATH="$PATH:(プログラムファイルが存在するディレクトリ)"' >> ~/.bashrc
このようにして bash_profile
やbashrc
に記述を追加しようとしている記事はCatalina以降のOSXを使用している場合はパスを通したと思っていても、うまくいかない可能性があります.
もし、あなたのターミナルの上部にzsh
と書かれていて、bash_profile
と書かれている記事を参照している場合はそのbash_profile
と書かれている部分をzshrc
に置き換えるとうまくいくかもしれません.
Macでパスをとおすときのお勧めのやり方
$ echo 'export PATH="$PATH:(プログラムファイルが存在するディレクトリ)"' >> ~/.zshrc
$ source ~/.zshrc
詳しくは https://qiita.com/k3ntar0/items/eb8cdbd8eba9da388def が参考になるでしょう.
まとめ
さて、「パスに通す」ということの概念を噛み砕いて説明してみましたがいかがだったでしょうか.
よくわからずなんとなくパスを通していた人も多いかもしれませんが、これを理解すると、パスが通せていない時に現れるエラー文のzsh: Command not found
の意味がわかると思います.
予め記したはずのメモに「プログラムファイル
がありそうな場所」いわゆる「マンションのありそうな場所」が書いていなければ、見つけるよう指示されたマンションを膨大なファイルの中から探さなくてはいけなくなるということです.あなたが郵便配達員だったとしたら探すの諦めちゃうでしょ?「そんなマンション探すの無理だ〜」って言わなければいけません.
コンピュータも見つからないものは見つからないと教えてくれているわけです.
エラー文は、無理難題を押し付けられてしまったコンピュータによるひそかな叫びです.
どうぞ、お手柔らかに、エラー箇所を直してあげてくださいませ.