Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@qiyu_ren

PATHを通すということ

はじめに

なにかインストールして新たなコマンドを使おうと思ったら、bash: [コマンド]: command not foundのように、コマンドがない...?なんてことがよく起こります。
その時に、「PATHを通す」というワードをよく耳にすると思いますが、そろそろスルーできないレベルになってきそうなので、それがどういうことなのか、また、それに関する周辺知識も含めて(すでに似たような記事はごまんとありますが。。)、自分用に書きます。

PATHを通すとは

コマンド検索パスを追加すること

らしいですが、これだけではよくわからない。。

コマンド検索パスとは

シェルがコマンドの実行ファイルを探しに行くパス

とのこと。

普段からよく使っているターミナル(Windowsだったらコマンドプロンプト)などのコンソールで入力するcdなどのコマンド。

あれは、/binディレクトリにcdの実行ファイルが入っているから、コマンドが使えるようになってます。

実は、/bin/cdと実行ファイルのパスをコマンドとして入力しても同じらしいですが、そんな書き方しなくてもcdだけでもその機能(ディレクトリの移動)を使いたいですよね。

/bin/cdのような書き方をしなくてもcdだけで処理ができるのは、$PATHという環境変数(OSがデフォルトで持ってる変数)に格納されている、いくつかのパスのなかに、入力した文字列と同名の実行ファイルが格納されているディレクトリがあれば、/bin/cdのような書き方じゃなくても、シェルが処理を実行してくれるからなんですよね。

つまり、cdの例の流れとしては、

cdを入力

シェルが環境変数$PATHを参照

環境変数$PATHに格納されている/binディレクトリにcd実行ファイルがあることをシェルが確認

シェルがcd/bin/cdと同様のコマンドとして捉え、処理を実行

という感じです。

その、環境変数$PATHに格納されているパスを、コマンド検索パスといいます。

つまり、PATHを通すということは、$PATHにコマンドの実行ファイルがあるディレクトリのパスを追記してあげて、コマンドを使えるようにしてあげる」ということなんですね。

コマンド検索パスとコマンド実行ファイルの確認方法

新しいプログラムやライブラリをインストールして、そのコマンドを使用したいのなら、$PATHにそのコマンドの実行ファイルがあるディレクトリのパスを記載してあげればOKです。

でももしかしたら、すでに、パスが記載されているかもしれませんね。

その場合に$PATHを確認したいときはecho $PATHをすると、$PATHに格納されているパスが見れます。パスは:で区切られてます。このなかのディレクトリを漁れば、探せます。

echo $PATH

#出力結果
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

また、which [実行コマンド]でそのコマンドの実行ファイルのパスを表示してくれます。こっちの方が早いです。

which cd

#出力結果
/usr/bin/cd

これをやっても、見つからないのなら、PATHを通す必要があります。

PATHの通し方

コマンドを入力しても、bash: [コマンド]: command not foundのようにコマンドがない、とPCさんから言われたら、PATHを通してあげると解決します。

具体的には、$PATHを直接いじるのではなく、.bash_profile.bashrcなどのご自身のシェルの設定ファイルというものをいじります。(ここでは、bashを例にしてご説明します)

シェルの設定ファイルは、ログインしたとき(.bash_profile)や、シェルを切り替えたとき(.bashrc)に読み込まれるファイルで、このファイルに$PATHを編集するコマンドを記載することで、PATHを通していきます。

ちなみにこの設定ファイルたちは、ホームディレクトリに隠しファイルとして存在してます。ホームディレクトリ上(cd ~で移動できます)でls -aで確認できます。(環境によっては、デフォルトでない場合もあるそうです)

全体の流れ

先にPATHを通す全貌を記します。

  1. シェルの設定ファイルを開く
  2. 設定ファイルに$PATHを編集するコマンドを記載する
  3. 追記した設定ファイルを実行する

シェルの設定ファイルを開く

まずは、設定ファイルを開きましょう。
デフォルトでbashをシェルで使っているので、.bash_profileを開いて、そこに書き込んでいきます。

$ open ~/.bash_profile

# ~はホームディレクトリ

そのほかのシェルをご使用の方はご自身のシェルの設定ファイルに、また、ほかのシェルでbashに切り替えてbashを使っている方は、.bashrcに、それぞれ書き込みましょう。

自分の環境のシェルがわからない方はecho $SHELLで確認できます。

また、デフォルトで設定ファイルが存在しない場合は、ホームディレクトにご自身のシェルの設定ファイルを作成してください。(touch [ファイル名]で作成できます)

設定ファイルに追記する

次に、開いた設定ファイルに以下の文を追記します。

export PATH=[通したいパス]:$PATH

exportコマンドは環境変数を設定するためのコマンドで、export [環境変数]=値で、環境変数を設定します(ちなみに、=なので上書きされます):区切りなので、通したいパスの後に:をつけて、その後に現状の$PATHを加えます。

追記した設定ファイルを実行する

最後に、追記した設定ファイルを反映させます。以下のsourceコマンドを実行してください。

$ source ~/.bash_profile

以上で、PATHが通ったかと思いますので、[コマンド] -vみたいな感じで、コマンド起動ができるか確認してください。

リファレンス

PATHを通すとは? (Mac OS X) Qiita
【zsh, bash】macでPATHを通す方法 - not found と出てしまったら Qiita

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
qiyu_ren
初心者なので、間違いがありましたらご指摘いただけると幸いでございます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?