Posted at

fishの配列と環境変数PATH

More than 3 years have passed since last update.

fishのおもしろいなと思ったところのひとつは環境変数PATHが配列になっているところです

今は関係はないけどzshも$pathでアクセスする配列である。

環境変数PATHの中身は以下のものとします。

$ printenv PATH

PATH=/usr/local/bin:/usr/bin/:/bin

$PATHをechoしてみよう。

$ echo $PATH

/usr/local/bin /usr/bin/ /bin

コロンがなくなっていますね。

配列になっているので添字でアクセスできます。

番号は1からです。

$ echo $PATH[1]

/usr/local/bin
$ echo $PATH[2]
/usr/bin
$ echo $PATH[3]
/bin
$ echo $PATH[-1]
/bin

負の数も使えます。

ところでぱPATH以外の配列を環境変数にすると、どうなるのでしょうか。

環境変数にするにはsetの-xオプションを使うみたいです。--exportでも可能です。

$ set -x hoge aaa bbb ccc

$ echo $hoge
aaa bbb ccc
$ printenv hoge
aaa:bbb:ccc

コロン区切りになることがわかりました。

折角配列なのでループを回しておきましょう。

$ for i in $hoge

echo $i
end
aaa
bbb
ccc


まとめ

fishでは環境変数PATHは配列になっています。

配列を環境変数にするとプロセスからはコロン区切りで結合されている状態になるようです。


参考文献