/etc/bashrc
次のように 変数を定義しました。
export VAR1=yadayada
runner.sh
以下のコードで呼び出される bash スクリプトがあります=> そこでrun_test.sh
、python スクリプトを起動する別のスクリプトを実行します。python スクリプトは、上記の env 変数を使用します。
内容は次のとおりですrunner.sh
:
#!/bin/bash
exec /home/john/run_test.sh
シェルから起動すると、runner.sh
env 変数が定義されていないというエラーが発生します。
crontab から同じものを起動しrunner.sh
、crontab にも env 変数を定義しておくと、すべてが正しく実行されます。
シェル実行から env 変数を「収集」しない理由とbashrc
、それを修正する方法を説明していただけますか?
答え1
これを試して、
/etc/bashrc を編集した後 (ちなみに、使用している Linux のバージョンは何ですか? 私は通常、このような内容を ~/.bashrc に入力します)、次のコマンドを実行してみてください。
source /etc/bashrc
次に、runner.sh スクリプトを実行します。
今実行
set
コマンドを実行して、環境変数がリストに表示されているかどうかを確認します。
答え2
私もあなたと同じことを試してみましたが、私のシステムでは問題なく動作します。Python を使用して環境変数にアクセスしようとしていますか? Python が 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