首页 > 解决方案 > 如何在环境变量中隐藏密码和密钥?(Linux)

问题描述

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

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

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

如果我从终端运行这个脚本,它会运行

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 大约十次,甚至重新启动了我的电脑,但它一直在给None

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

标签: python-3.xbashenvironment-variablessublimetext3manjaro

解决方案


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

或者,您可以在构建系统中定义环境变量。一个示例可能如下所示:

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

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

这样做的好处是能够更改变量和值,而无需注销并重新登录。


推荐阅读