如何在环境变量中隐藏密码和密钥? (Linux)

How to hide passwords and secret keys in environment variables ? (Linux)

我正在使用 manjaro 和 bash shell。我试图在环境变量中隐藏密码和密钥,以便我可以在我的 python 脚本中使用它们。

我在我的 .bashrc 文件中试过这个

export BOT_EMAIL="mymail@automail.com"
export BOT_PASS="pass_"

如果我 运行 这个脚本来自终端它 运行s

import os

a = os.environ.get("BOT_EMAIL")
b = os.environ.get("BOT_PASS")

print(a, b)

并按预期给我这个输出

mymail@automail.com pass_

但是当我尝试 运行 来自 sublime text 3 的脚本时问题来了,它给了我这个

None None

我认为这是 sublime 的问题,所以我重新启动 sublime 大约十次,甚至重新启动了我的电脑,但它一直显示 None

我是编程小白,linux如果有人能解决这个问题,那将非常有帮助。

您正在为本地用户设置环境变量。作为不同的用户,Sublime 最有可能应该是 运行。您可以通过 topps 命令来解决这个问题。

如果要设置全局变量,请探索 /etc/profile 或 /etc/environment。

Sublime 从它的启动环境继承它的环境变量。因此,如果你从 bash 启动它,它将能够读取你在启动时设置的所有变量。如果您从 sublime_text.desktop 文件(菜单或侧边栏上的图标)启动它,它将只能读取在 Launcher 进程启动时设置的环境变量——即,在登录。所以,如果你不想总是从命令行开始,把你的环境变量放在你的 ~/.profile 文件中,然后注销并重新登录。把它们放在 ~/.bashrc won 't 有效,因为它仅供交互式会话阅读。

或者,您可以在 build system 中定义环境变量。示例可能如下所示:

{
    "shell_cmd": "python3 -u \"$file\"",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",

    "env": {"PYTHONIOENCODING": "utf-8",
            "MYVAR1": "value1",
            "MYVAR2": "value2"
    }
}

这样做的好处是无需注销再重新登录即可更改变量和值。

我认为 MattDMo 谈到了这一点(但只是为了详细说明为什么这很重要 - 因为我最近解决了同样的问题)

您的 IDE 正在从程序启动中继承环境变量。要让您的新环境变量生效:关闭并重新启动您的 IDE.