在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
无效。
是否可以通过这种方式将新设置的环境变量传递给程序? 谢谢
答案 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");