问题描述
我正在使用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
中不会起作用,因为只有交互式会话才能读取。
或者,您可以在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 继承了程序启动的 env var。要让您的新环境变量生效:关闭并重新启动您的 IDE。
,您正在为本地用户设置环境变量。 Sublime最有可能应以其他用户身份运行。您可以从top
或ps
命令中找出答案。
如果要设置全局变量,请浏览/ etc / profile或/ etc / environment。