我在/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