/proc/pid/environをenvコマンドの引数に確実に変換する方法は?
IFS=$'\n' ; env -i $(xargs -0n1 -a /proc/$$/environ)
すべての環境変数に改行文字がない場合にのみ機能します。IFS=$'\0'
BashとDashでは動作しません。
利用可能な他の方法はありますか(他のシェル方法を含む)?
答え1
Bashでは、ファイル内の項目として配列を作成し、environ
配列要素を引数として使用できますenv
。
mapfile -d '' envs < /proc/$$/environ
env -i "${envs[@]}" ...
改行文字で動作するようです。
$ foo=$'a\nb' bash
$ mapfile -d '' envs < /proc/$$/environ
$ printf '|%s|\n' "${envs[@]}"
|foo=a
b|
|LC_MEASUREMENT=en_GB.UTF-8|
|SSH_CONNECTION=127.0.0.1 33066 127.0.0.1 22|
...