![/proc/pid/environ을 env 명령에 대한 인수로 안정적으로 변환하는 방법은 무엇입니까?](https://linux55.com/image/127787/%2Fproc%2Fpid%2Fenviron%EC%9D%84%20env%20%EB%AA%85%EB%A0%B9%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%9D%B8%EC%88%98%EB%A1%9C%20%EC%95%88%EC%A0%95%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
/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|
...