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

Passing the environment variables to the launched process bash script

本文关键字:进程 bash 脚本 启动 环境变量      更新时间:2023-10-16

在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 setn");

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

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

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

啊,对不起的拼写错误,和我的错误,在脚本中,我用'sudo'启动二进制文件,它在root的环境中运行,没有设置变量。删除sudo,它工作得很好。很抱歉造成了混乱。欢呼。阿卜杜拉-

首先,您需要source您的shell脚本,以便设置env变量。第二,在getenv呼叫中包含引号。

char * env_var = getenv("SAMPLE_VAR");
if (env_var != NULL) printf("var setn");