linux命令行工具env可以转储当前环境。
因为有一些特殊的字符,所以我想使用env -0 (以0字节而不是换行符结束每个输出行)。
但是如何再加载这个垃圾堆呢?
Bash版本: 4.2.53
发布于 2016-08-24 12:35:32
不要使用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"发布于 2016-08-24 09:12:57
如果要加载env的导出,可以使用Set environment variables from file中描述的内容
env > env_file
set -o allexport
source env_file
set +o allexport但是,如果您碰巧使用-0进行导出,它将使用(从man env):
-0,-空 以0字节而不是换行符结束每一行输出
因此,您可以使用0作为字符分隔符循环遍历该文件,以标记行尾(在cat file | while IFS= read -r line; do … done中有更多描述):
env -0 > env_file
while IFS= read -r -d $'\0' var
do
export "$var"
done < env_filehttps://stackoverflow.com/questions/39118918
复制相似问题