bashrc で定義された環境変数は /bin/bash からアクセスできません

bashrc で定義された環境変数は /bin/bash からアクセスできません

/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.shenv 変数が定義されていないというエラーが発生します。

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

関連情報