env -0 转储环境。但是如何加载呢?

env -0 dump environment. But how to load it?

linux命令行工具env可以转储当前环境。

因为我想使用一些特殊字符env -0(每个输出行以 0 字节而不是换行结束)。

但是如何再次加载这个转储?

Bash版本:4.2.53

如果您想加载 env 的导出,您可以使用 Set environment variables from file:

中描述的内容
env > env_file
set -o allexport
source env_file
set +o allexport

但是如果你碰巧用 -0 导出它使用(来自 man env):

-0, --null
end each output line with 0 byte rather than newline

因此您可以使用 0 作为字符分隔符来循环遍历文件以标记行的结尾(What does IFS= do in this bash loop: cat file | while IFS= read -r line; do … done 中有更多说明):

env -0 > env_file
while IFS= read -r -d $'[=11=]' var
do
   export "$var"
done < env_file

不要使用env;使用 declare -px,它以可以重新执行的形式输出导出变量的值。

$ declare -px > env.sh
$ source env.sh

这也使您可以保存 导出的变量,env 无法访问:只需使用 declare -p (删除 -x 选项)。


例如,如果您编写 foo=$'hello\nworld'env 会产生输出

foo=hello
world

declare -px 产生输出

declare -x foo="hello
world"