/bin/bash 无法访问在 bashrc 中定义的环境变量

/bin/bash 无法访问在 bashrc 中定义的环境变量

我按照/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

相关内容