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

标签 c++ linux bash shell

在 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 但无济于事。

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

最佳答案

由于功能请求到 mark a comment as an answer仍然被拒绝,我在这里复制上面的解决方案。

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

关于c++ - 将环境变量传递给启动的进程 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17040162/

相关文章:

linux - 添加 init.d 服务(shell 中的 chkconfig/autocomplete)

linux/虚拟/物理页面大小

java 执行 bash 脚本,error=26 文本文件忙

linux - 如何使静态链接的 ELF 文件加载 LD_PRELOAD .so

C++:迭代 STL 容器的正确方法

c++ - 如果在 C++ 中超出范围,将打印出什么值

c++ 到 c#'s "作为”?

用于递归查找和转换电影的 Bash 脚本

python - 从 python 代码调用 shell 脚本,没有任何返回值 (0) 或换行符

python - 使用python事件并与c++交互