MacOSX での PATH の通し方について解説

MacでのPATHの通し方の解説ページアイキャッチ

このページにはプロモーションが含まれています

このページでは、MacOSX で PATH を通す方法について解説していきます!

vim などを利用すると設定が大変だったりするので、今回はテキストエディットアプリから PATH を通す設定を行えるように解説していきたいと思います。

このページとしてはシェルが zsh であることを前提に解説していきます。もし bash を利用している場合は、.zshrc という部分を .bash_profile に置き換えて読み進めていただければと思います。

そもそもシェルって何?

シェルが zshbash のどちらであるか分からない!

という方もおられると思いますので、途中でシェルの種類の確認方法も説明します。ですので、上記のような方も、とりあえず解説を読み進めていっていただければと思います(特に設定を変更していなければ zsh だと思います)。

また、PATH を通すためにはパスの知識も必要になります(PATH を通すことの意味についてはこのページで解説します)。パスに関しては、下記ページで「ターミナルアプリを扱う上で知っておいた方が良い点」の1つとして解説していますので、パスをご存知ない方は下記ページも合わせて読んでいただくことをオススメします。

macのターミナルアプリの使い方の解説ページアイキャッチ Macでのターミナルアプリの使い方

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 を通す」ためには、そのファイルが存在するフォルダのパスを環境変数 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 という名前のファイルが作成されることになります。

.zshrcPATH の設定を記述する

続いて、先程作成した .zshrc ファイル or 既に作成されていた .zshrc ファイルに PATH の設定を記述していきます。

そのために、まずは下記のコマンドを実行します。

open .zshrc

open は指定されたファイルやフォルダを開くコマンドになります。open にファイルを指定した場合、そのファイルの種類に応じてアプリが起動し、そのアプリによって指定したファイルが開かれます。open .zshrc を実行した場合は、おそらくテキストエディットが起動して .zshrc が開かれるはずです。

MEMO

今回は 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 の設定を上書くことになり、PATH に通したフォルダのパスが /Users/daeu/Documents/program の1つのみになってしまいます。既にインストールしたアプリなどが動作しなくなる可能性もあるので注意してください。

export PATH=/Users/daeu/Documents/program

こう聞くと PATH の設定が怖くなってしまうかもしれませんが、.zshrcPATH の設定部分の修正や削除を行うことで簡単に PATH の設定を元に戻すことができるので安心してください。

.zsrhc の変更をターミナルに反映する

PATH の設定を記述したあとは、まずは忘れずにテキストエディットアプリ上でファイルの保存を行なってください。

ただ、ファイルを保存しただけでは .zshrc の変更はターミナルには反映されません。.zshrc の変更を行うためには、ターミナルアプリを一旦閉じてから再度起動する or 下記のコマンドを実行する必要があります。

source .zshrc

スポンサーリンク

PATH が通っているかどうかを確認する

.zshrc の変更の反映を行えば、.zshrc に設定した通りに PATH にフォルダが追加されているはずです。

これを確認するために、下記のコマンドを実行してみましょう!

echo $PATH

すると、PATH に設定されているフォルダのパスが : 区切りで表示されます。その中に、.zshrcPATH に追加を行うように設定したフォルダのパスが表示されれば、そのフォルダの 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 が、.zshrcPATH に追加したフォルダのパスとなります。

ここで、元々 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 を通す手順を試してみてください!

同じカテゴリのページ一覧を表示

2 COMMENTS

るど

> それに対して、$PATH: を省略して下記のように記述してしまうと、元々の PATH の設定を上書くことになり、PATH に通したフォルダのパスが /Users/daeu/Documents/program の1つのみになってしまいます。

これを知らずに困ってたのでとても助かりました!
丁寧な解説ありがとうございます!!m(__)m

返信する
daeu

るど さん

コメントありがとうございます!

> それに対して、$PATH: を省略して下記のように記述してしまうと、元々の PATH の設定を上書くことになり、PATH に通したフォルダのパスが /Users/daeu/Documents/program の1つのみになってしまいます。

これ、私もやらかして困った経験があるんですよね…。
その経験が役に立ったようで、私としても嬉しいです!

返信する

daeu へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です