小编Non*_*yme的帖子

如何在文件中存储/加载导出的环境变量

我希望能够将我当前的环境保存在一个文件中(用于正在运行的交互式会话),以便我可以:

  • 保存,在运行会话中随意导出/修改/删除变量,然后恢复保存的环境
  • 在多个环境之间随意切换
  • 检测两个环境之间的差异

我只对导出的变量感兴趣。因为我希望能够恢复环境,所以它必须是一个 shell 函数,所以我正在使用 bash。理想情况下,它不依赖于外部程序,并且适用于从 v3.2.25 到当前的 bash 版本。

现在,为了保存我的环境,我使用以下函数:

env_save () {
    export -p > "$STORAGE/$1.sh"
}
Run Code Online (Sandbox Code Playgroud)

env_save <filename>在运行会话中使用的。我有一些样板代码来保存备份,但让我们忽略它。

但是,我在重新加载环境时遇到了困难:

env_restore () {
    source "$STORAGE/$1.sh"
}
Run Code Online (Sandbox Code Playgroud)

因为这不会删除我同时创建的虚假变量。也就是说,调用export -pafterenv_restore <filename>可能不会给出与cat $STORAGE/$1.sh.

有没有一种干净的方法来处理这个问题?我可能需要将一些变量(例如 PWD、OLDPWD、SHELL、SHLVL、USER、SSH_*、STORAGE 等)列入黑名单……也就是说,这些变量不应保存且在恢复时不应更改,因为它们是特殊变量. 我不能使用白名单,因为我不知道那里会有哪些变量。

environment-variables persistence

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

environment-variables ×1

persistence ×1