linux命令行工具env
可以转储当前环境
由于有一些特殊字符,我想使用env -0
(以0字节结束每个输出行,而不是换行符)。
但是如何再次加载这个转储?
Bash Version: 4.2.53不要使用env
;使用declare -px
,它以可重新执行的形式输出导出变量的值。
$ declare -px > env.sh
$ source env.sh
这也为您提供了保存非导出变量的可能性,env
没有访问权限:只需使用declare -p
(去掉-x
选项)。
例如,如果您编写foo=$'hellonworld'
, env
将生成输出
foo=hello
world
而declare -px
产生输出
declare -x foo="hello
world"
如果您想加载env
的导出,您可以使用从文件中设置环境变量:
env > env_file
set -o allexport
source env_file
set +o allexport
但是如果你碰巧用-0
导出,它会使用(from man env
):
0,零以0字节结束每个输出行,而不是换行
因此,您可以使用0
作为字符分隔符来循环文件,以标记行结束(更多描述请参见IFS=在此bash循环中做什么:cat file | while IFS= read -r line; do … done
):
env -0 > env_file
while IFS= read -r -d $' ' var
do
export "$var"
done < env_file