我有一个程序,使用此代码
创建一个名为$EGG
的环境变量
memcpy(buff,"EGG=",4);
putenv(buff);
system("/bin/bash");
buff
的值用于创建环境变量,我通过$EGG
变量使用它,但是为了使用它我看到我必须使用调用system("/bin/bash");
。否则,如果我不使用/ bin / bash调用,我找不到我的$EGG
变量。
有没有办法在不调用/bin/bash
的情况下保存我的环境变量?
答案 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
。)