首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >环境0转储环境。但是如何装载呢?

问环境0转储环境。但是如何装载呢?
EN

Stack Overflow用户
提问于 2016-08-24 09:03:57
回答 2查看 3.2K关注 0票数 10

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

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

但是如何再加载这个垃圾堆呢?

Bash版本: 4.2.53

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-24 12:35:32

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

代码语言:javascript
复制
$ declare -px > env.sh
$ source env.sh

这也为您提供了保存非导出变量的可能性,env无法访问这些变量:只需使用declare -p (删除-x选项)即可。

例如,如果您编写了foo=$'hello\nworld',env将生成输出

代码语言:javascript
复制
foo=hello
world

当declare -px生成输出时

代码语言:javascript
复制
declare -x foo="hello
world"
票数 21
EN

Stack Overflow用户

发布于 2016-08-24 09:12:57

如果要加载env的导出,可以使用Set environment variables from file中描述的内容

代码语言:javascript
复制
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中有更多描述):

代码语言:javascript
复制
env -0 > env_file
while IFS= read -r -d $'\0' var
do
   export "$var"
done < env_file
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39118918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档