ShellScript
Bash
Zsh
環境変数

シェルスクリプトで環境変数の一覧を取得する

環境変数の一覧が必要になったのでやり方を調べてみました。

結論

以下のコマンドで一覧を取得できます。

$ env -0 | tr '\r\n' ' ' | sed 's/\x0/\n/g' | sed 's/=.*//'

補足

env コマンドは以下のような形式で環境変数の一覧を出力します。

A=foo
B=bar
C='hoge
hoge'
...

ここから変数名だけ抜き出したいわけですが、上のC=のように値が複数行になる場合があります。
これをそのままsedで処理するのは難しいので、-0オプションをつけて出力をNull文字区切りにします。
trで改行を適当に置き換えてからNull文字を改行に置き換えれば値部分の改行だけ除去できるので、あとは=から行末まで消して終了です。