このページでは、MacOSX で PATH
を通す方法について解説していきます!
vim
などを利用すると設定が大変だったりするので、今回はテキストエディットアプリから PATH
を通す設定を行えるように解説していきたいと思います。
このページとしてはシェルが zsh
であることを前提に解説していきます。もし bash
を利用している場合は、.zshrc
という部分を .bash_profile
に置き換えて読み進めていただければと思います。
zsh
と bash
のどちらであるか分からない!という方もおられると思いますので、途中でシェルの種類の確認方法も説明します。ですので、上記のような方も、とりあえず解説を読み進めていっていただければと思います(特に設定を変更していなければ zsh
だと思います)。
また、PATH
を通すためにはパスの知識も必要になります(PATH
を通すことの意味についてはこのページで解説します)。パスに関しては、下記ページで「ターミナルアプリを扱う上で知っておいた方が良い点」の1つとして解説していますので、パスをご存知ない方は下記ページも合わせて読んでいただくことをオススメします。
Contents
PATH
を通すとは?
まず「PATH
を通す」ことの意味合いについて解説しておきたいと思います。
この解説が不要という方は、実際に PATH
を通す手順を解説する PATH を通す手順 までスキップしていただければと思います。
「PATH
を通す」の意味
「PATH
を通す」とは、一言でいえば、「ファイル名だけでファイルを実行できるようにする」ための設定です。
まず、ターミナルアプリ等でコマンドでファイルを実行するためには、その実行したいファイルのファイルパスを指定する必要があります。
例えば、/Users/daeu/program/appli
という実行可能ファイルが存在する場合、下記のように、このファイルのファイルパスを指定することで appli
を実行することができます。
% /Users/daeu/program/appli
上記は絶対パスで指定していますが、相対パスで指定するのでも OK です。
こんな感じで、ファイルを実行するためには、基本的にはファイルパスを指定する必要があります。
ただ、その一方で、ファイル名だけで実行できるファイルも存在します。例えば、ps
などはその例になります。
ps
は実行中のプロセスの状態を表すコマンドですが、実体は単なる実行可能ファイルです。
この ps
の実体のファイルは、おそらく /bin/ps
になります。これに関しても、当然下記のようにファイルパスを指定して実行することができます。
% /bin/ps PID TTY TIME CMD 31809 ttys000 0:00.31 -zsh 29805 ttys001 0:00.14 /bin/zsh -l 29887 ttys002 0:00.12 /bin/zsh -l
また、この /bin/ps
に対してはファイル名だけ、つまり、下記のように ps
だけでも実行することができます。
% ps PID TTY TIME CMD 31809 ttys000 0:00.31 -zsh 29805 ttys001 0:00.14 /bin/zsh -l 29887 ttys002 0:00.12 /bin/zsh -l
それに対し、先程紹介した /Users/daeu/program/appli
に関してはファイル名だけ、つまり、下記のように appli
だけで実行するとエラーになります。
% appli zsh: command not found: appli
この、ファイル名だけで “実行できる” or “実行できない” の違いは、これらのファイルに「PATH
が通っているかどうか」によって発生します。
先程の例でいえば、/bin/ps
には予め PATH
が通っているため、ファイル名だけで実行することが可能です。
それに対し、/Users/daeu/program/appli
には PATH
が通っていないため、ファイル名だけで実行することができず、ファイルパスを指定して実行する必要があります。
こんな感じで、ファイルに “PATH
が通っている” or “PATH
が通っていない” によって、ファイル名だけでのファイルの実行可否が変わります。
ただ、後述する特定の手順を踏めば、あなたの望むファイルに「PATH
を通す」ことが可能です。
ですので、どんな実行可能ファイルであっても、例えばあなたが作成したプログラム等であっても、そのファイルに PATH
さえ通してやれば、ps
等のコマンド同様に、ファイル名のみの指定によって実行できるようになります。
このように、「ファイル名だけでファイルを実行できるようにする」ための設定が「PATH
を通す」になります。
わざわざファイルパスを指定することなくファイル名だけで実行できるようになるので便利ですし、PATH
さえ通しておけば、ファイルが存在するフォルダの場所を知らなくてもファイル実行できるようにもなります。
もちろん、PATH
を通さなくてもファイルパスさえ指定してやればファイルの実行は可能ですが、特定のファイルに PATH
が通っていることを前提に作成されているプログラムやスクリプトなどもありますので、これらを実行するために PATH
を通すことが必然になるようなケースもあります。
スポンサーリンク
そもそも PATH
とは?
大体「PATH
を通す」ことの意味合いについては伝わったのではないでしょうか?
ここで、そもそも PATH
って何のか?という点について説明しておきたいと思います。
PATH
とはファイルパスの “パス” の英語表記の意味合いもあるのですが、「PATH
を通す」と言った時の PATH
は、環境変数の1つである PATH
を指します。環境変数とは、大雑把にいうと「設定」を保存する変数です。
では、環境変数 PATH
が何の設定の保存を行うかというと、これは「コマンドでファイル名が指定された時の検索先のフォルダ」の設定です。PATH
には、検索先として複数のフォルダを設定することが可能です。
コマンドとしてファイル名だけが実行された場合、PATH
に設定されているフォルダの中を検索し、そのファイルが存在するかどうかの確認が行われるようになっています。
検索した結果ファイルが見つかった場合、そのファイルが実行されることになります。
例えば、PATH
に下記の3つのフォルダが設定されていた場合、
/usr/local/bin
/usr/bin
/bin
ターミナルで ps
コマンドを実行すると、1つ1つのフォルダに対して、ps
というファイル名のファイルの検索が行われます。
/usr/local/bin
:/usr/local/ps
なし…/usr/bin
:/usr/bin/ps
なし…/bin
:/bin/ps
あり!
そして、ファイルが見つかった場合、そのファイルが実行されることになります。上記の場合だと、/bin
の中で ps
が見つかったので、/bin/ps
が実行されることになります。
こんな感じで、環境変数 PATH
に設定されているフォルダの中のファイルに関しては、コマンドでファイル名だけ指定すれば自動的に検索されるため、実質的にファイル名だけでファイルの実行を行うことが可能です。
逆に、PATH
に設定されていないフォルダにのみ存在するファイルに関しては、コマンドでファイル名だけ指定した際、そのファイルが存在するフォルダに対しては検索が行われないため、そのファイルを見つけることができません。
そのため、ファイル名だけで実行すると zsh: command not found: xxx
と表示され、どのファイルも実行されないことになります。
PATH
を通すためにやるべきこと
つまり、コマンドとしてファイル名だけ指定した際に、そのファイルが実行できるかどうかは、環境変数 PATH
の設定によって決まるということになります。具体的には、そのファイルが環境変数 PATH
に設定されているフォルダに存在するかどうかによって決まります。
ですので、特定のファイルをファイル名だけで実行できるようにするためには、そのファイルが存在するフォルダのパスを環境変数 PATH
に追加してやれば良いことになります。
これによって、そのファイルはファイル名だけで実行することができるようになります。もっと言えば、PATH
に追加したフォルダの下にあるファイルは全て、ファイル名だけで実行することができるようになります。
前述の通り、「ファイル名だけでファイルを実行できるようにする」ための設定が「PATH
を通す」ですので、つまりは「PATH
を通す」ためにやるべきことは「フォルダのパスを環境変数 PATH
に追加する」になります。
より具体的に言えば、特定のファイルに「PATH
を通す」ためには、そのファイルが存在するフォルダのパスを環境変数 PATH
に追加してやれば良いことになります。
PATH
を通す手順
では、続いて本題である MacOSX で PATH
を通す手順を解説していきます。
ここまで解説してきた通り、特定のファイルに「PATH
を通す」ためには、そのファイルが存在するフォルダのパスを環境変数 PATH
に追加することが必要です。
ここからは、PATH
を通す手順を「環境変数 PATH
へのフォルダのパスの追加」に焦点を当てて解説を行なっていきたいと思います。
言ってしまえば、「環境変数 PATH
へのフォルダのパスの追加」を行うために必要なのは、設定ファイル(.zshrc
)への PATH
の設定の追記と、設定ファイルの反映の2つのみです。
ただ、初めて PATH
を通す作業を行う方にとっては、設定ファイルの変更自体も大変だと思いますので、準備や注意点なども踏まえながら、丁寧に解説をしていきたいと思います。
スポンサーリンク
ターミナルアプリを起動する
MacOSX で PATH
を通すためには、ターミナルアプリを使用する必要があります。ということで、まずはターミナルアプリを起動しましょう!
ターミナルアプリは下記の場所にあります。
アプリケーション -> ユーティリティ -> ターミナル
Finder でユーティリティフォルダを開き、下の図の青枠で囲ったアイコンをダブルクリックすれば、ターミナルアプリを起動することができます。
ターミナルアプリが起動すれば、下の図のような画面が表示されるはずです(色合い等は異なるかもしれないです)。
シェルの種類を確認する
続いて、このページの冒頭でも触れたシェルの種類を確認しましょう!
おそらく、ターミナルアプリのウィンドウにシェルの種類が表示されているはずです。
もし表示されていない場合は、ターミナルアプリ上に下記のコマンドを打ち込み、エンターキーを押して実行してください。
echo $SHELL
コマンド実行した結果、下記が表示されればシェルの種類は zsh
です。
/bin/zsh
もし、下記が表示されればシェルの種類は bash
です。この場合は、以降の解説で登場する .zshrc
という部分を .bash_profile
に置き換えて読み進めてください。
/bin/bash
.zshrc
が既に作成済みであるかどうか確認する
ここから設定ファイルである .zshrc
に追記をし、環境変数 PATH
の設定を行なっていきます。
まずは、既に設定ファイル .zshrc
が作成済みであるかどうかの確認を行います。
そのために、下記のコマンドを実行します。
cd ~/
このコマンドは、ホームフォルダに移動するコマンドになります。ホームフォルダは、おそらく /Users/[ユーザー名]
に設定されているはずです。
ホームフォルダに移動後、続いて下記のコマンドを実行します。
ls .zshrc
このコマンドは、.zshrc
という名前のファイルの情報を表示するものになりますが、ここでは .zshrc
が存在するかどうかを確認するために、このコマンドを使用しています(ちなみに ls
だけだと、現在いるフォルダに存在するファイルの一覧を表示することができます)。
上記コマンドを実行し、次のように表示された場合、設定ファイルである .zshrc
はまだ存在しないことになります。
ls: .zshrc: No such file or directory
それに対し、次のように表示された場合、設定ファイルである .zshrc
は既に作成済みということになります。
.zshrc
ちなみに、MacOSX ではファイル名やフォルダ名の先頭に .
が付いている場合、隠しファイル or 隠しフォルダとして扱われることになります。
ですので、Finder 等では基本的に .zshrc
は表示されないので注意してください。そして、表示されないからといって .zshrc
が存在しないとは言い切ることはできません。
Finder では、キーボードの shift
+ command
+ .
を同時押しすることで、隠しファイルや隠しフォルダの表示と非表示を切り替えることが可能です。ですので、Finder から .zshrc
の存在の有無を確認する場合は、shift
+ command
+ .
の同時押しで隠しファイルを表示してから確認するようにしてください。
スポンサーリンク
.zshrc
を作成する(.zshrc
が未作成の場合のみ)
もし .zshrc
が存在しない場合は、まずは .zshrc
を作成する必要があります。
そのために、下記のコマンドを実行します。
touch .zshrc
これにより、中身が空の .zshrc
という名前のファイルが作成されることになります。
.zshrc
に PATH
の設定を記述する
続いて、先程作成した .zshrc
ファイル or 既に作成されていた .zshrc
ファイルに PATH
の設定を記述していきます。
そのために、まずは下記のコマンドを実行します。
open .zshrc
open
は指定されたファイルやフォルダを開くコマンドになります。open
にファイルを指定した場合、そのファイルの種類に応じてアプリが起動し、そのアプリによって指定したファイルが開かれます。open .zshrc
を実行した場合は、おそらくテキストエディットが起動して .zshrc
が開かれるはずです。
今回は open
コマンドで .zshrc
を開いて編集を行う前提で解説しますが、もちろん vim
などで .zshrc
を開いて編集しても良いです
また、open
コマンドで .zshrc
が開かれるアプリがテキストエディットで無かったとしても、テキストファイルの編集さえ行えればどのアプリでも良いので、気にせず次に進んでいただいて良いです
.zshrc
が開かれたら、ファイルの末尾に下記のように PATH
の設定を追記します。
export PATH=$PATH:追加したいフォルダのパス
ここで指定する 追加したいフォルダのパス
とは、”あなたが PATH
を通したいファイル” が存在するフォルダのパスになります。
例えば /Users/daeu/Documents/program/appli
というファイルに PATH
を通したいのであれば、下記のように記述を行います。
export PATH=$PATH:/Users/daeu/Documents/program
ここで、$PATH:
の部分の記述を忘れないようにしてください。
アプリのインストールなどによって元々いくつかのフォルダのパスが PATH
に設定されているはずです。$PATH:
の後ろ側にフォルダパスを指定することで、その元々の PATH
の設定を保持したまま、指定したフォルダパスを追加することができます。
それに対して、$PATH:
を省略して下記のように記述してしまうと、元々の PATH
の設定を上書くことになり、PATH
に通したフォルダのパスが /Users/daeu/Documents/program
の1つのみになってしまいます。既にインストールしたアプリなどが動作しなくなる可能性もあるので注意してください。
export PATH=/Users/daeu/Documents/program
こう聞くと PATH
の設定が怖くなってしまうかもしれませんが、.zshrc
の PATH
の設定部分の修正や削除を行うことで簡単に PATH
の設定を元に戻すことができるので安心してください。
.zsrhc
の変更をターミナルに反映する
PATH
の設定を記述したあとは、まずは忘れずにテキストエディットアプリ上でファイルの保存を行なってください。
ただ、ファイルを保存しただけでは .zshrc
の変更はターミナルには反映されません。.zshrc
の変更を行うためには、ターミナルアプリを一旦閉じてから再度起動する or 下記のコマンドを実行する必要があります。
source .zshrc
スポンサーリンク
PATH
が通っているかどうかを確認する
.zshrc
の変更の反映を行えば、.zshrc
に設定した通りに PATH
にフォルダが追加されているはずです。
これを確認するために、下記のコマンドを実行してみましょう!
echo $PATH
すると、PATH
に設定されているフォルダのパスが :
区切りで表示されます。その中に、.zshrc
で PATH
に追加を行うように設定したフォルダのパスが表示されれば、そのフォルダの PATH
への追加が成功していることになります(追加したフォルダのパスは最後に表示されるはず)。
例えば、私が echo $PATH
を実行した場合は下記のように表示されます。
/Library/Frameworks/Python.framework/Versions/3.10/bin:/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS:/Library/Frameworks/Python.framework/Versions/3.10/bin:/Users/daeu/Documents/program
最後の /Users/daeu/Documents/program
が、.zshrc
で PATH
に追加したフォルダのパスとなります。
ここで、元々 PATH
を通したかったファイルをファイル名だけで実行してみましょう!
ファイル名だけで実行できるようであれば、そのファイルは PATH
が通っていることになります。
PATH
に複数のフォルダを追加する
以上が、MacOSX における PATH
の通し方の一連の流れの解説となります。
もし、新たに PATH
に追加したいフォルダが出てきた場合は、.zshrc
を開いて下記のように :
区切りで PATH
へのフォルダの追加を行なってください。
export PATH=$PATH:追加したいフォルダのパス:追加したいフォルダのパス2:追加したいフォルダのパス3
もしくは、下記のように行を分けてフォルダの追加を行なっても良いです。
export PATH=$PATH:追加したいフォルダのパス export PATH=$PATH:追加したいフォルダのパス2 export PATH=$PATH:追加したいフォルダのパス3
.zshrc
の変更が終わったら、.zsrhc の変更をターミナルに反映する と PATH が追加されたかどうかを確認する で説明した内容に従って、.zshrc
の変更の反映と確認を行なってください。
PATH
に設定されたフォルダの優先度
ちなみに、echo $PATH
によって表示されるフォルダパスの順番には意味があります。
PATH
に設定されているフォルダに同じ名前のファイルが存在する場合、echo $PATH
によって表示される順番が早い方のフォルダに存在するファイルが優先されて実行されることになります。
例えば、echo $PATH
の表示結果が下記なのであれば、
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/Users/daeu/Documents/program
/Users/daeu/Documents/program
よりも /usr/local/bin
の方が早く表示されていますので、/usr/local/bin
の方が優先度が高いです。
そのため、/usr/local/bin/python
と /Users/daeu/Documents/program/python
の2つの同じ名前のファイルが存在する場合、コマンド python
を実行した際には /usr/local/bin/python
の方が実行されることになります。
もし、あなたが PATH
に追加したフォルダの方の優先度上げたいのであれば、.zshrc
への追記時、下記のように $PATH
よりも前側に 追加したいフォルダのパス
を指定するようにしてください。
export PATH=追加したいフォルダのパス:$PATH
ただ、追加したパスのフォルダと元々 PATH
に設定されていたフォルダの中に同じ名前の実行ファイルがあった場合、同じコマンドでも異なるファイルが実行されるようになってしまい、今まで動作していたプログラムやスクリプトに影響を及ぼす可能性があります。
例えば、新たに PATH
に追加したフォルダに ps
というファイルが存在する場合、今まで ps
コマンドで /bin/ps
が実行されていたのが、新たに PATH
に追加したフォルダにある ps
の方が実行されるようになってしまいます。
こういった影響を無くすため、もちろんケースバイケースではありますが、追加したいフォルダのパスは $PATH
の後ろ側に指定して、追加するフォルダの優先度を下げておくのが無難だと思います。
スポンサーリンク
通した PATH
を取り消す
また、一度通した PATH
を後から取り消す場合は、.zshrc
から PATH
の設定を行なった行を消す or その行をコメントアウトする必要があります。
.zshrc
でのコメントアウトは、行の先頭に #
を追記することで実現することができます。
#export PATH=$PATH:追加したいフォルダのパス
不要になった PATH
の設定を行なっている行の削除 or コメントアウトが完了したら、ファイルを保存したのちにターミナルアプリを一旦終了し、再度ターミナルアプリを起動します。
起動後に echo $PATH
のコマンドを実行すれば、追加したフォルダのパスが表示されなくなったことが確認できると思います。
一時的にのみ PATH
を通す
ここまでは、恒久的に PATH
を通す手順について解説してきましたが、一時的にのみ PATH
を通すようなこともできます。
手順としては簡単ですが、PATH
を通した後にターミナルアプリを終了すると、通した PATH
の設定が消えてしまうので注意してください。
一時的にのみ PATH
を通す場合は、ターミナルアプリで下記のコマンドを実行します。
export PATH=$PATH:追加したいフォルダのパス
これは、恒久的に PATH
を通す際に、.zshrc
に追記したものになります。一時的に PATH
を通す場合は、これをコマンドとして実行します。
手順としてはこれだけになります。echo $PATH
を実行すれば、追加したいフォルダのパスが PATH
に設定されていることが確認できると思います。
まとめ
このページでは、MacOSX での PATH
の通し方について解説しました!
実行可能ファイルに PATH
を通すことで、そのファイルをどのフォルダからでもファイル名のみで実行することができるようになります。
この PATH
を通す際には、ホームフォルダに存在する .zshrc
に下記を追記します。
export PATH=$PATH:追加したいフォルダのパス
追記した後に、ファイルを保存すること及び、.zshrc
の反映が必要な点に注意してください。
また、上記を .zshrc
に追記するのではなく、コマンドとして実行することで、一時的にのみ PATH
を通すこともできます。
プログラミングの環境構築を行う時など、この PATH
を通す作業がどうしても必要になることが結構あります。
最初はちょっと難しく感じるかもしれませんが、何回かやれば慣れる作業ですので、是非このページを参考にして PATH
を通す手順を試してみてください!
> それに対して、$PATH: を省略して下記のように記述してしまうと、元々の PATH の設定を上書くことになり、PATH に通したフォルダのパスが /Users/daeu/Documents/program の1つのみになってしまいます。
これを知らずに困ってたのでとても助かりました!
丁寧な解説ありがとうございます!!m(__)m
るど さん
コメントありがとうございます!
> それに対して、$PATH: を省略して下記のように記述してしまうと、元々の PATH の設定を上書くことになり、PATH に通したフォルダのパスが /Users/daeu/Documents/program の1つのみになってしまいます。
これ、私もやらかして困った経験があるんですよね…。
その経験が役に立ったようで、私としても嬉しいです!
[…] https://daeudaeu.com/mac-path/ […]