はじめに
今日、新しい言語を始めようと思ってターミナルをたくさんいじったんですよ。当然コマンドとかよく分からないので色々調べて、調べた通りにやったんですけど、*”PATHを通す”*という作業がどうも理解できず…。
「PATHってなんぞや?ファイターパスか?」
みたいな感じでしたので、いろんな人に教えてもらったものとか調べたものから、理解できた範囲内でまとめてみようと思います!
環境
- MacOS Mojave
PATHとはなんぞや①
まずは愚直にGoogle先生に聞きました。
PATH とは [検索]
そしたらこんな感じの記事がたくさん出てきました!
色々なサイトでお勉強してみたのですが、つまりPATHというのは、
コマンドを実行するプログラムが保存されているディレクトリの場所を設定する環境変数
だ、そうです。
うーんよく分からない…。
ところで、そういえばコマンドってなんですか?
と、思った。
色々調べていくと、
コマンドは実行ファイルのことだとわかりました。
コマンドには、全てそれぞれに対応する実行ファイルが存在するのです。
実際にwhich
コマンドを使って、コマンドのありかを調べてみると…。
$ which pwd
/bin/pwd
ありましたー!どうやら/binというディレクトリに入ってるっぽいので早速ls
で見てみましょう!
$ ls /bin
[ echo ls sleep
bash ed mkdir stty
cat expr mv sync
chmod hostname pax tcsh
cp kill ps test
csh ksh pwd unlink
date launchctl rm wait4path
dd link rmdir zsh
df ln sh
おお〜。よくお世話になるコマンドがたくさん…!
これらすべてが実行ファイルでありコマンドであるということですね。
PATHとはなんぞや②
コマンドの正体を暴いたところで、もう一度PATHについて考えてみます。
ターミナルではいっつもコマンド名(実行ファイル名)のみを打ち込むだけで実行してくれますよね。
でも本来は、ファイル名だけではなくフルパスを入力する必要があるらしいのです。フルパスというのは、ドライブ名から始めてすべてのディレクトリ名を指定して入力することです。
つまり、
$ pwd
としたい場合は、
$ /usr/local/bin/pwd
と書く必要があるということです。
「ええーめんどくさい。」
分かります。ということでそれを楽にしてくれてるのが環境変数PATHなんです。
さっき、PATHというのは、
コマンドを実行するプログラムが保存されているディレクトリの場所を設定する環境変数
と書きました。コマンドの正体を知っているのでさっきよりは理解できるのではないでしょうか…!
長ったらしくフルパスを書かなくて済むように、どこかにコマンドの居場所を書いておいているのです。
そして、そのどこかというのが環境変数PATHということです。
さっきから出てきている環境変数というのは、コンピューターちゃんの覚え書き🌟みたいなもんです。
ここの情報はすべてのアプリケーションから参照できるようになってます。
環境変数は、ターミナルでprintenv
と話しかけるとコンピューターちゃんが見せてくれます。
実際見て守ると分かりますが、ユーザー名とかホームディレクトリとかが書いてあります。もちろんその中にPATHもあります。
つまり、
コンピューターちゃん「よく使う情報を環境変数としてまとめて書いておけばいつでもどこでも誰でも必要な情報をとってこれるようにしておいたよ🌟」
ってことですね。四次元ポケットみたい。(??)
力尽きたのでここでおしまいです
PATH、なんとなく理解できてよかったです。
事の発端はJuliaをインストールしてパスを通したつもりが、何回やり直してもどうやってもcommand not found
から抜け出せず……という事件でした。
「生半可な理解ではダメだ…」と思い勉強するに至ったのです。
そして、たった今さっき、やっとPATHが通ったんです!!よかった…
なぜダメだったのか、使いうちに研究してまとめて置こうと思います。
最後まで読んでくださりありがとうございました(><)