我试图在Linux中使用简单的C ++程序获取环境变量$ PATH的值,如下所示:
shouldSwitch
我使用了两种不同的方法:使用管道和使用getenv方法。他们都输出了这个:
的/ opt / texbin:在/ usr / local / sbin中:在/ usr / local / bin中:/ usr / sbin目录:在/ usr / bin中:/ sbin目录:/ bin中:在/ usr /游戏:在/ usr /本地/游戏: /usr/local/netbeans-7.3.1/bin
有趣的是,PATH的实际价值是不同的!
为什么我的C ++程序为PATH显示不同的值?
编辑1:我在Eclipse IDE中运行我的C ++程序。
编辑2:直接编译程序(没有Eclipse IDE)显示正确的PATH值!
编辑3:我也在here找到了答案。
答案 0 :(得分:3)
进程从创建它的进程继承环境。
这就是Linux的工作方式,以及许多其他操作系统。
如果从Eclipse启动程序,该程序将继承Eclipse的环境
如果从shell启动程序,该程序将继承shell的环境,包括对init文件中PATH
的修改。
由于Eclipse从启动它的任何进程继承了其环境,如果从shell而不是通过桌面GUI启动Eclipse,您应该会看到预期的输出。