不使用/ bin / bash保存环境变量

时间:2015-08-09 10:12:46

标签: c linux bash variables environment-variables

我有一个程序,使用此代码

创建一个名为$EGG的环境变量
 memcpy(buff,"EGG=",4);
 putenv(buff); 
 system("/bin/bash"); 

buff的值用于创建环境变量,我通过$EGG变量使用它,但是为了使用它我看到我必须使用调用system("/bin/bash");。否则,如果我不使用/ bin / bash调用,我找不到我的$EGG变量。

有没有办法在不调用/bin/bash的情况下保存我的环境变量?

2 个答案:

答案 0 :(得分:0)

简短回答:您无法以您尝试的方式修改现有环境。

背景:用于创建环境变量EGG的程序在启动时获得自己的环境(通常作为启动程序的进程环境的副本)。在程序内部创建了自己的环境EGG

当一个程序结束时,它的环境也消失了,并且它已经在那里创建了。

要以编程方式修改环境,请不要编写(C)程序,而是使用脚本。

使用bash可能如下所示:

#!/bin/bash
export EGG=4

保存此示例set_egg_to_4.sh并调整文件模式可以执行它:

$ chmod +x set_egg_to_4.sh

然后运行脚本:

$ ./set_egg_to_4.sh

并通过

测试EGG
$ echo $EGG
4

答案 1 :(得分:0)

永久地"设置环境变量,将其添加到.bash_profile文件中。

export EGG=4

每次启动登录会话时都会获取此文件,因此每次都会将EGG添加到您的环境中。从这个shell继承(直接或间接)的任何东西在其环境中也会有EGG

您的系统上可能有其他文件在启动时立即获取,因此在此类文件中设置的变量可供所有进程使用(无论用户如何)。 (我想到的是/etc/environment。)