如何在环境变量中隐藏密码和密钥?(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_

但问题来了,当我试图从崇高的文本3运行脚本时,它给了我这个

None None

我认为这是一个崇高的问题,所以我重新启动了崇高大约十次,甚至重新启动了我的电脑,但它一直给出None

我对编程和linux一无所知,如果有人能解决这个问题,那将非常有帮助。

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

或者,您可以在构建系统中定义env-var。一个样本可能看起来像这样:

{
"shell_cmd": "python3 -u "$file"",
"file_regex": "^[ ]*File "(...*?)", line ([0-9]*)",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8",
"MYVAR1": "value1",
"MYVAR2": "value2"
}
}

这样做的优点是可以更改变量和值,而无需注销和重新登录

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

您的IDE正在继承程序启动时的env-var。要使新的env-var生效:关闭并重新启动IDE

您正在为本地用户设置环境变量。Sublime很可能应该以不同的用户身份运行。您可以从topps命令中了解这一点。

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

最新更新