複数行の値を持つ環境変数は、env
の出力を混乱させる可能性があります。
# export A="B
> C=D
> E=F"
# env
A=B
C=D
E=F
TERM=xterm
SHELL=/bin/bash
USER=root
MAIL=/var/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/root
LANG=en_US.UTF-8
PS1=\h:\w\$
SHLVL=1
HOME=/root
LOGNAME=root
_=/usr/bin/env
この場合、間違った名前が表示されるため、すべての名前を抽出するために使用することはできません。awk -F=
C
E
# env | awk -F= '{print $1}'
A
C
E
TERM
SHELL
USER
MAIL
PATH
PWD
LANG
PS1
SHLVL
HOME
LOGNAME
_
次に、各出力行を改行ではなく 0 バイトで終了env
するフラグをサポートしていることがわかったので、使用すると、次の値を切り捨てることができます。-0
sed
bash
# env -0 | sed -e ':a;N;$!ba;s/\([^=]\+\)=\([^\x00]*\)\x00/\1\n/g'
A
TERM
SHELL
USER
MAIL
PATH
PWD
LANG
PS1
SHLVL
HOME
LOGNAME
_
ただし、 BusyBox のバージョンのはflagenv
をサポートしていません-0
。それを行う別の方法はありますか?