為什麼環境變數在 Linux 中不回傳任何值?

為什麼環境變數在 Linux 中不回傳任何值?

在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_profileand~/.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 的任何命令名稱)。那麼它看到變數了嗎?

相關內容