Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2832

PATH を通すについてまとめてみた

$
0
0

PATH を通すとは ?

ターミナル上でコマンドを打てば処理が行われます。業務・日常的に触れる cd, vi, mkdirなどなどです。
lsであればカレントディレクトリのファイル一覧を確認することができます。

ところが以下のようなエラー文が出ることがあります。新たに追加したライブラリ用のコマンドとかでですね。

PATHが通っていない時
-bash: ${コマンド名}: command not found

この command not foundPATH が通っていないことを教えてくれています。
(そもそも、存在しないコマンドの可能性もあります。)

コマンド 1 つ 1 つは、実行ファイルによって処理が行われます。そのため、実行ファイルがある場所までの 道標を明示しなければコマンドは実行できなくなるのです。

つまり、 PATH を通すとは、コマンド実行ファイルを探しに行くパスを示してあげることです。

コマンド実行ファイルのPATH
$ which ${コマンド名}

$PATHはどこで示されているの ?

PATH は bash_profileというファイルに書き込みます。
bash_profileはログイン時に 1 度実行されるファイルです。( terminal や iTerm などの起動時 )

ファイルを開かないで確認するときは
$ echo$PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

$ printenv PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

# つまり 5 箇所
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
bash_profileの中身確認
# 書き換えを含むなら$ vi ~/.bash_profile

# readonly なら$ less ~/.bash_profile

1 行でずらっと書かれていますが :で PATH は区切られます。ですので現在 PATH が通っているのは 5 箇所になります。

この 5 箇所に関しては bash_profile に書かれていないくても PATH は通るみたいですが、実行ファイルを読み込めなくなったときは書き込む必要はありそうです。( Linux の標準コマンドだからかな ? )

$PATHを通すには

bash_profileに、実行ファイルがあるディレクトリまでのパスを書き込む必要があります。bash_profile が存在しなければ新規で作成する必要があります。(touchコマンドで作りましょう)

書きかた
export PATH="${通したいパス}:$PATH"
mysqlのPATHを通す
$ vi ~/.bash_profile

# ファイル内に以下を書き込み保存# 末尾の $PAHT はこの export 以前の $PATH を指定export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
PATHの通し方2
$ echo"export PATH=/usr/local/bin:$PATH">> ~/.bash_profile

bash_profile に書かれている export が複数ある場合は、最後の export が $PATHの内容となります。ですので、$PATHには

  • 通したいパス
  • これまでの $PATH

を書き込まなければいけません。

bash_profileを更新して完了

書き換えが終わったら最後に、bash_profile を再読み込みすれば完了です。ターミナルを再起動するか、 sourceコマンドで更新することで可能です。

ファイルを更新する
source ~/.bash_profile

完了と思ったけど意図したコマンドの挙動でないとき

「PATH を通して bash_profile も更新して、さあコマンドを打ったぞ! ...あれ、おかしいな、挙動がおかしい。」

こんなことが時たまあります。ライブラリの version 違いとか。

原因は export の書き方にあります。通したパスには優先順位が存在します。
コマンドの実行ファイルがあるかどうかの検索は左から順に行われ、見つけた瞬間に後続のパスは検索されません。

ですので、挙動がおかしい場合は、同名の実行ファイル(コマンド)が手前のパス内にないか確認することで解決できます。

解決策は片方の実行ファイルを削除するなどで対応できます。(削除してはいけない実行ファイルの場合は他の策を考えます)
削除後はシンボリックリンクを書き換えます。


Viewing all articles
Browse latest Browse all 2832

Latest Images

Trending Articles