我按照/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
我收到环境变量未定义的错误。
如果我从 crontab 启动相同程序runner.sh
,并且 crontab 中也定义了 env 变量,那么一切都会顺利。
您能解释一下为什么我们没有从 shell 运行中“收集”环境变量吗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