0

次の bash スクリプトは crontab で呼び出されました。

/etc/profile.d/python.sh で python の環境変数をいくつか定義しました。

$JOBCMD は、長時間実行される Python スクリプトだったので、このスクリプトを fork で呼び出したいと考えています。

#!/bin/sh

. /etc/profile.d/python.sh

JOBCMD=`/path/to/a_long_time_shell.py`

if [ -z "$variable" ]; then
    (
        . /etc/profile.d/python.sh
        $JOBCMD &
    )
fi

exit 0

結果は、$JOBCMD can't get environment variables in /etc/profile.d/python.sh? です。どうすれば修正できますか?

4

2 に答える 2

1

これを行う最も簡単な方法は、次の変数をエクスポートすることですpython.sh

export a=123
export b=234

それ以外の

a=123
b=234

あなたがやっていると思います。

または、必要な変数がわかっている場合は、スクリプトを呼び出す前にそれらをエクスポートできます。

...
. /etc/profile.d/python.sh
export a
export b
$JOBCMD &
...
于 2013-02-23T11:40:10.477 に答える
0
export JOBCMD=`/path/to/a_long_time_shell.py`

新しく作成されたすべてのプロセスで利用できるようにする必要があります。または、さらに良い。psutils を使用してプロセスを名前で検索し、その方法で何かを行うことができます。環境に何かを渡すことは、IPC を行うための奇妙な方法です。

于 2013-02-23T11:33:48.490 に答える