/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|
...