如何在环境变量中隐藏密码和密钥? (Linux)
How to hide passwords and secret keys in environment variables ? (Linux)
我正在使用 manjaro 和 bash shell。我试图在环境变量中隐藏密码和密钥,以便我可以在我的 python 脚本中使用它们。
我在我的 .bashrc 文件中试过这个
export BOT_EMAIL="mymail@automail.com"
export BOT_PASS="pass_"
如果我 运行 这个脚本来自终端它 运行s
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 的问题,所以我重新启动 sublime 大约十次,甚至重新启动了我的电脑,但它一直显示 None
。
我是编程小白,linux如果有人能解决这个问题,那将非常有帮助。
您正在为本地用户设置环境变量。作为不同的用户,Sublime 最有可能应该是 运行。您可以通过 top
或 ps
命令来解决这个问题。
如果要设置全局变量,请探索 /etc/profile 或 /etc/environment。
Sublime 从它的启动环境继承它的环境变量。因此,如果你从 bash
启动它,它将能够读取你在启动时设置的所有变量。如果您从 sublime_text.desktop
文件(菜单或侧边栏上的图标)启动它,它将只能读取在 Launcher 进程启动时设置的环境变量——即,在登录。所以,如果你不想总是从命令行开始,把你的环境变量放在你的 ~/.profile
文件中,然后注销并重新登录。把它们放在 ~/.bashrc
won 't 有效,因为它仅供交互式会话阅读。
或者,您可以在 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 正在从程序启动中继承环境变量。要让您的新环境变量生效:关闭并重新启动您的 IDE.
我正在使用 manjaro 和 bash shell。我试图在环境变量中隐藏密码和密钥,以便我可以在我的 python 脚本中使用它们。
我在我的 .bashrc 文件中试过这个
export BOT_EMAIL="mymail@automail.com"
export BOT_PASS="pass_"
如果我 运行 这个脚本来自终端它 运行s
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 的问题,所以我重新启动 sublime 大约十次,甚至重新启动了我的电脑,但它一直显示 None
。
我是编程小白,linux如果有人能解决这个问题,那将非常有帮助。
您正在为本地用户设置环境变量。作为不同的用户,Sublime 最有可能应该是 运行。您可以通过 top
或 ps
命令来解决这个问题。
如果要设置全局变量,请探索 /etc/profile 或 /etc/environment。
Sublime 从它的启动环境继承它的环境变量。因此,如果你从 bash
启动它,它将能够读取你在启动时设置的所有变量。如果您从 sublime_text.desktop
文件(菜单或侧边栏上的图标)启动它,它将只能读取在 Launcher 进程启动时设置的环境变量——即,在登录。所以,如果你不想总是从命令行开始,把你的环境变量放在你的 ~/.profile
文件中,然后注销并重新登录。把它们放在 ~/.bashrc
won 't 有效,因为它仅供交互式会话阅读。
或者,您可以在 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 正在从程序启动中继承环境变量。要让您的新环境变量生效:关闭并重新启动您的 IDE.