TL;DR
特に順番は気にしないとき
path+=('/hoo/bar/baz');
最初にいれたいとき
path=('/hoo/bar/baz' $path)
PATH通そうとして壊れるヤツ
UNIXを使っている上で避けて通れないのが環境変数$PATH
でしょう。
:
区切りにディレクトリを列挙して、列挙されているディレクトリ直下に置かれているバイナリファイルをコマンドとして使えるようにするアレですね。
そんな$PATH
に新しいディレクトリを追加しようとして、ついつい次のような事故がよく置きます。
export PATH="/hoo/bar/baz"
こうしてしまうと最初から$PATH
に設定していたデータが吹っ飛んで、PATH
の中身が/hoo/bar/baz
だけになってしまいます。こうなるとlsとかのコマンドが使えなくなる訳ですね。
zshだと$path
で配列として扱える
この問題は何が原因かというと$PATH
の中身が単なる文字列なのが結構原因何じゃないかなと思っています。
$PATH
は明らかに配列構造なので、配列のインターフェースとして扱えればある程度事故が減るはずです。
zshではなんと$path
という変数があり、機能そのものは$PATH
と同様に環境変数PATH
なのですが、$path
は配列として設定されています。
これによってzshでは配列に対して+=
で末尾に要素を追加できるので、path+=('/bar/baz')
とか書いておけば、export PATH="$PATH:/bar/baz"
と書いたのと同じ意味になります。最後にPATH書く必要がなくて便利。
とはいえ先頭についかするunshift相当の操作は演算子でできないので、path=('/hoo/bar/baz' $path)
みたいに書く必要があります。まぁこれはしょうがない。
という訳でzshでPATH
を操作するときは$path
使ったほうが便利です。どうぞお試しください。