zshrcでPATHを通したい
仕事用のメインPCをWindowsからMacに切り替えた。
どうやらMacではプログラムを走らせようとすると何かとPATHを通すように要求されるらしい。
PATHを通すことでどのディレクトリでもそのプログラムをランできるようになる。
bashとzsh
プログラムを動かすターミナルにはシェルと呼ばれるものがあって、これがMacOSのバージョンによって異なることがわかった。
シェルの種類によって、そもそものPATHの通し方の設定自体も変わってくる。
MacOSのシェルにはbashとzshの2種類があり、自分のシェルはzshだった。
確認するためのコマンドは
echo $SHELL
bashの場合はbash_profileファイル、zshの場合はzshrcファイルを編集する。
zshでPATHを通す
GoogleでPATHの通し方を調べると、
-
プログラムのインストール
-
/usr/localとかに移す
-
~/binにPATHを通す
3-1. ホームディレクトリにある.zshrcファイルをテキストエディットで開く。
open ~/.zshrc
3-2. 以下の文をPATHを通すディレクトリに合わせて編集して.zsfrcに書き込む。/usr/local/binにPATHを通すなら…
export PATH="$PATH:/usr/local/bin"
3-3. .zshrcファイルの変更を適用する。
source ~/.zshrc
3-4. PATHが通っているか確認する
echo $PATH | tr ':' '\n'
で、できるらしい。
同じPATHを2つ通してしまう…
上記の方法でやると、PATHが上書きされるのではなく、追加されてしまう。つまり、PATHを書き込むごとにどんどんPATHが増えていってしまう。そもそも、.zshrcには追加したいPATHのみを書き込み、次回新たにPATHを追加するときは.zshrcの内容を全てクリアしてから使うものである。だが、PATHの全容をテキストとして見られるように.zshrcには全てのPATHを保存しておきたい。
zshでの解決法がわからん
解決法を探したが、bashでの解決方法はあるものの、zshについての日本語のページが見つからない。Googleでいろいろ調べていると、海外の質問サイトに答えが載っていた。
zshrcで重複したPATHを削除する
やることはひとつ、
typeset -U PATH
これだけ。
PATH、であって、pathでもPathでもないことに注意。
終わったら、
echo $PATH | tr ':' '\n'
で確認。
以上。
確かに重複したPATHがきれいになくなっていた。
ここで一手間
この処理を毎度のPATHを通す度にタイプするのは面倒なので、これを.zshrcファイルに組み込んで.zshrcファイルの更新を適用するごとに重複を削除する様にする。
.zshrcファイルで
export PATH=...
export PATH=...
と並んでいる文字列の最後の行に先程の
typeset -U PATH
を追加すればOK。
これで毎回3-3にある処理をするごとに重複したPATHが削除される様になる。
参考ページ