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

时间:2020-09-22 16:47:27

标签: python-3.x bash environment-variables sublimetext3 manjaro

我正在使用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_

但是当我尝试从崇高的文字3运行脚本时,问题就来了

None None

我认为这是崇高的问题,因此我重新启动了崇高的操作系统大约十次,甚至重新启动了我的计算机,但它始终显示None

我是编程和Linux的新手,如果有人可以解决这个问题,那将非常有帮助。

3 个答案:

答案 0 :(得分:0)

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

或者,您可以在build system中定义环境变量。一个示例可能看起来像这样:

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

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

其优点是无需注销和重新登录即可更改变量和值。

答案 1 :(得分:0)

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

您的 IDE 继承了程序启动的 env var。要让您的新环境变量生效:关闭并重新启动您的 IDE

答案 2 :(得分:-3)

您正在为本地用户设置环境变量。 Sublime最有可能应以其他用户身份运行。您可以从topps命令中找出答案。

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