/bin/bash 無法存取 bashrc 中定義的環境變數

/bin/bash 無法存取 bashrc 中定義的環境變數

我在/etc/bashrc以下問題中定義了變數:

export VAR1=yadayada

runner.sh我使用下面的程式碼呼叫了 bash 腳本=> 我們執行另一個名為的腳本run_test.sh,該腳本正在啟動 python 腳本。 python 腳本使用上面提到的 env 變數。

這是runner.sh內容:

#!/bin/bash
exec /home/john/run_test.sh

從 shell啟動時runner.sh出現錯誤,指出 env 變數未定義。

如果我從 crontab 啟動相同的程序runner.sh,並在 crontab 中定義了 env 變量,一切都會正常。

您能否解釋為什麼我們沒有從 shell run 中「收集」環境變量bashrc,以及如何修復它?

答案1

試試這個,

編輯 /etc/bashrc 後(順便說一句,你使用的是哪個版本的 Linux?我通常會自己將這樣的內容放入 ~/.bashrc 中),嘗試執行以下命令

source /etc/bashrc

然後運行你的 runner.sh 腳本..

現在運行

set

命令查看環境變數是否顯示在清單中。

答案2

我嘗試做與您所做的相同的事情,它在我的系統上運作良好。您如何嘗試使用 python 存取環境變數?確保 pyhton 使用 os.environ 方法。

首先檢查環境變數

[john@tilki ~]$ grep VAR /etc/bashrc
export VAR1=bla
[john@tilki ~]$ env | grep VAR
VAR1=bla

腳本的內容

[john@tilki ~]$ cat runner.sh
#! /bin/bash

echo $VAR1

python  print_var.py
[john@tilki ~]$ cat print_var.py
import os

print os.environ['VAR1']

運行 runner.sh 腳本

[john@tilki ~]$ ./runner.sh
bla
bla

相關內容