shell 环境变量的全局与局部静态变量

Posted

技术标签:

【中文标题】shell 环境变量的全局与局部静态变量【英文标题】:Global vs. local static variable for shell environment variables 【发布时间】:2011-04-11 02:55:05 【问题描述】:

我正在实现一个简单的 shell,我希望能够通过 shell 设置环境变量。使用set var = hello等简单语法

我有一个这样的结构来表示一个环境变量:

typedef struct 
    char *name;
    char *value;

我正在考虑创建一个上述结构的动态数组来保存所有环境变量。问题是我不确定如何正确实施。

现在,我不确定是否应该在函数或全局变量中将数组设为静态。哪一个会更好?为什么?

【问题讨论】:

为什么不直接使用 setenv(3) 或 putenv(3) 并将设置放入 shell 环境中? 【参考方案1】:

这完全取决于需要从哪里访问变量。如果仅在单个函数中需要它们,那么静态局部变量最有意义。如果他们需要“文件范围”,那么文件全局(仍然是静态的)最有意义。否则,全局。

另一个选项,对于未来的扩展更好,是创建一个带有访问器函数的文件静态变量集,以获取和设置名称/值组合,并在其他任何地方使用该 API。如果您突然需要存储大量名称/值对(例如,存储到 b-tree 而不是数组),这可以让您稍后将存储机制更改为更有效的方式。

【讨论】:

以上是关于shell 环境变量的全局与局部静态变量的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本环境变量

shell脚本环境变量

Linux编程 11(shell全局环境变量与局变环境变量)

Linux环境变量

Linux环境变量

SHELL环境变量初识(第六章)