linux命令行工具env
可以转储当前环境。
由于有一些特殊字符我想使用env -0
(以0字节而不是换行结束每个输出行)。
但是如何再次加载这个转储?
Bash版本:4.2.53
答案 0 :(得分:11)
不要使用env
;使用declare -px
,它以可重新执行的形式输出导出变量的值。
$ declare -px > env.sh
$ source env.sh
这也使您可以保存非 - 导出的变量,env
无法访问:只使用declare -p
(删除{{1选项)。
例如,如果您编写了-x
,foo=$'hello\nworld'
会生成输出
env
而foo=hello
world
产生输出
declare -px
答案 1 :(得分:4)
如果您要加载env
的导出,可以使用Set environment variables from file中描述的内容:
env > env_file
set -o allexport
source env_file
set +o allexport
但是,如果您碰巧使用-0
导出,则使用(来自man env
):
-0, - null
以0字节而不是换行符结束每个输出行
因此,您可以使用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 $'\0' var
do
export "$var"
done < env_file