Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Linux中使用getenv函数_C++_Linux_Environment Variables - Fatal编程技术网

C++ 在Linux中使用getenv函数

C++ 在Linux中使用getenv函数,c++,linux,environment-variables,C++,Linux,Environment Variables,我有以下简单的程序: int main() { char* v = getenv("TEST_VAR"); cout << "v = " << (v==NULL ? "NULL" : v) << endl; return 0; } int main() { char*v=getenv(“测试变量”); 无法将其添加到.bash\u profile(位于您的主目录中)。您需要注销并重新登录才能使其生效 此外,由于您使用的是bash,因此可

我有以下简单的程序:

int main() { char* v = getenv("TEST_VAR"); cout << "v = " << (v==NULL ? "NULL" : v) << endl; return 0; } int main() { char*v=getenv(“测试变量”);
无法将其添加到
.bash\u profile
(位于您的主目录中)。您需要注销并重新登录才能使其生效

此外,由于您使用的是bash,因此可以在一条语句中组合导出和设置:

export TEST_VAR="2"
在我的系统(Fedora13)上,您可以通过在/etc/profile.d/下添加系统范围的环境变量来创建环境变量

例如,如果您将其添加到/etc/profile.d/my_system_wide.sh中的文件中

SYSTEM_WIDE="system wide"
export SYSTEM_WIDE
然后打开另一个终端,无论用户是谁打开该终端,它都应将其作为源

echo $SYSTEM_WIDE
system_wide

Linux上没有系统范围的环境变量。每个进程都有自己的环境。现在,默认情况下,每个进程都从其父进程继承其环境,因此可以通过确保在每个感兴趣的进程的祖先中设置var来获得类似于系统范围的环境。然后,只要没有其他进程ess改变了var,每个感兴趣的过程都会设置它

这里的其他答案给出了各种早期设置变量的方法。例如,
.bash\u profile
在用户运行的每个登录进程中设置变量,这是用户登录后运行的每个进程的最终父进程。
/etc/profile
由每个用户的每个bash登录名读取。

如果我太天真,很抱歉,但是不是。bash\u profile只有在您将bash作为默认shell运行时才有用

我“有时”使用Linux,大部分使用ksh。我有.profile,所以您可能应该检查。*profile并将变量导出到那里


祝您好运:)

。我的计算机上不存在bash\u配置文件。我创建了新文件并将TEST\u VAR移动到其中。重新启动后,TEST\u VAR即使在shell中也不可用。
echo $SYSTEM_WIDE
system_wide