0

在 crontab 中调用了下一个 bash 脚本。

我在 /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 无法在 /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 回答