1

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

这是脚本的代码

#!/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 无济于事。

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

4

2 回答 2

1

由于将评论标记为答案的功能请求仍然被拒绝,因此我在此处复制上述解决方案。

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

于 2013-10-30T13:50:13.617 回答
-1

首先,您需要source您的 shell 脚本才能env设置变量。其次,在getenv通话中包含引号。

char * env_var = getenv("SAMPLE_VAR");
if (env_var != NULL) printf("var set\n");
于 2013-06-11T09:05:33.100 回答