为什么环境变量在 Linux 中返回 none?

为什么环境变量在 Linux 中返回 none?

在 Windows 中,要设置新变量 = 值,我们可以简单地将其添加到环境变量中。但是在 Linux 中,这看起来有点困难。这是我遵循的程序:

打开终端并写入:

vim ~/.bashrc  

然后按键盘“i”,然后定义变量如下:

Test_MyVariable='Tessst'
export Test_MyVariable
PATH=$PATH:Test_MyVariable/bin

然后:wq

在 $echo 之后我看到了变量:

echo $Test_MyVariable 

并返回:

泰斯特

但在我的 Sublime Text 中它返回 None 。

import os
new_v= os.environ.get('Test_MyVariable')
print(new_v)

没有任何

我甚至检查了所有可用的 os.environ,但找不到我的Test_MyVariable。此外,我还尝试使用~/.bash_profile~/.profile并向它们添加变量,但结果相同。请告诉我我做错了什么?

答案1

当您在 中定义变量时~/.bashrc,该变量将在“获取”(读取)后立即存在~/.bashrc。这仅在您启动新 shell 时发生(例如,当您打开新终端时)。

因此,如果您将新行添加到.bashrc文件,则需要打开一个新终端并在那里运行您的 Python 脚本。或者,您可以运行source ~/.bashrc以将其源化到当前 shell 中。

现在,您提到了 sublime,但并没有真正解释为什么这很重要,所以我假设您正在 sublime 编辑器中以某种方式运行您的 python 脚本。据推测,它有某种 shell 模拟器。如果是这样,那么如何以及在何处定义变量的细节将取决于 sublime 如何设置其 shell。尝试以下操作:

  1. 只需关闭 sublime 窗口然后再次打开它,看看它是否已重新读取您的.bashrc

  2. Sublime 很可能.bashrc根本无法读取。如果您从某个 GUI 按钮运行 Sublime,您可能需要注销并重新登录,然后它才能重新读取变量。

  3. 尝试打开一个新终端并运行sublime(或从命令行启动 sublime 的任何命令名称)。那么它能看到变量吗?

相关内容