如何可靠地将 /proc/pid/environ 转换为 env 命令的参数?

如何可靠地将 /proc/pid/environ 转换为 env 命令的参数?

如何可靠地将 /proc/pid/environ 转换为 env 命令的参数?

  • IFS=$'\n' ; env -i $(xargs -0n1 -a /proc/$$/environ)仅当所有环境变量都没有换行符时才有效。
  • IFS=$'\0'在 bash 和 dash 中不起作用。

还有其他可用的方式(包括任何其他shell方式)吗?

答案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|
...

相关内容