我有一个C程序,可以打印每个环境变量,其名称由stdin给出。 它输出$ PATH,$ USER等变量,但看不到我在Linux shell中定义的环境变量... 例如,在bash中,我定义了my= 4,当我输入“ my”时,我希望程序返回4。 通用标签

我该怎么做才能改善getenv的结果? 我希望它向我展示所有环境变量以及Linux shell的所有继承。 谢谢你。

有帮助吗?

解决方案

有两种方法:

  1. my=4; export my; ./program
  2. my=4 ./program
  3. env my=4 ./program

    每种方法的效果相同,但机制不同。

    1. 此方法特定于您所使用的shell,尽管在大多数典型的shell中它都是这样工作的(Bourne shell变体; csh派生的shell再次有所不同)。首先设置一个 shell变量,然后将其导出到一个 environment变量,然后运行您的程序。在某些外壳上,您可以将其缩写为export my=4。程序运行后,该变量将保持设置状态。

    2. 此方法还取决于您的shell。这将为执行my临时设置./program环境变量 。运行后,my不存在(或具有其原始值)。

    3. 这将在运行程序之前使用env程序设置环境变量。此方法依赖于任何特定的shell,并且是最可移植的。与方法2一样,这会临时设置环境变量。实际上,shell甚至都不知道已设置了my

其他提示

如果您没有对其生成代码,那么它只是一个shell变量,而不是环境变量。使用exportexport my=4

这与C或getenv无关。如果在外壳中执行了my=4,则已定义了本地外壳变量。要使其成为环境变量,请执行export my

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top