python-3.x - 如何在环境变量中隐藏密码和密钥?(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 的菜鸟,如果有人能解决这个问题,那将非常有帮助。
解决方案
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"
}
}
这样做的好处是能够更改变量和值,而无需注销并重新登录。
推荐阅读
- java - 不写java代码只用application.yml配置多个数据源是否适用
- python - 为什么我不应该将我的项目文件放在我的 venv 文件夹中?
- nginx - 为什么我的 nginx 服务器只显示我的 index.html?
- c# - 在 .NET Core 2.2 下的 System.Drawing 中找不到 Image 类
- javascript - 与 Dynamitable 库完全匹配
- php - 将 index.php 重写为空,将 other.php 重写为 other
- wordpress - 无法从 Google App Engine PHP 7.2 环境建立外部 HTTP 连接
- r - 如何根据 ID 重命名文件名
- python - 如何在 Python 中为大型复杂参数获取 gamma 函数的值?
- .net - .NET 和 .NET Core 的 dotnet.exe 命令