将环境变量传递给已启动的进程bash脚本

时间:2013-06-11 08:59:42

标签: c++ linux bash shell

在linux下,我有一个bash脚本,它启动一个c ++程序二进制文件。 我需要做的是在该脚本中设置一个环境变量,并访问该变量 使用getenv在已启动的C ++程序中。

以下是脚本的代码

#!/bin/bash
export SAMPLE_VAR=1
./c++_binary

c ++程序:

char * env_var = getenv("SAMPLE_VAR");
if (env_var != NULL) printf("var set\n");

然而,这似乎不起作用。据我所知,当我们执行脚本时,它将在一个新的子shell中运行并在那里设置环境变量SAMPLE_BAR,但C ++二进制文件也在相同的子shell中启动(可能我在这里错了)所以它应该有权访问SAMPLE_VAR。我甚至尝试编写一个单独的脚本来设置env变量,在主脚本中我将该脚本称为source env_var_set.sh无效。

是否可以通过这种方式将新设置的环境变量传递给程序? 谢谢

2 个答案:

答案 0 :(得分:0)

由于对mark a comment as an answer的功能请求仍然被拒绝,我在此处复制上述解决方案。

对不起Typos,我的错误,在脚本中我用'sudo'启动二进制文件,在root的env中运行它并且没有设置变量。删除了sudo,它工作正常。对困惑感到抱歉。干杯。 - 阿卜杜拉

答案 1 :(得分:-1)

首先,您需要source shell脚本才能设置env变量。其次在getenv电话中加入引号。

char * env_var = getenv("SAMPLE_VAR");
if (env_var != NULL) printf("var set\n");