环境变量如同前述,环境字符串的形式是:name=value UNIX内核并不关心这种字符串的意义,它们的解释完全取决于各个应用程序。例如,shell使用了大量的环境变量。其中某一些在登录时自动设置(如HOME,USER等),有些则由用户设置。我们通常在一个shell起动文件中设置环境变量以控制shell的动作。例如,若设置了环境变量MAILPATH,则它告诉Bourne shell和Korn Shell到哪里去查看邮件。 ANSI C定义了一个函数getenv,可以用其取环境变量值,但是该标准又称环境的内容是由实现定义的。

include

char getenv(const char name);

返回:指向与name关联的value的指针,若未找到则为NULL。注意,此函数返回一个指针,它指向name=value字符串中的value。我们应当使用getenv从环境中取一个环境变量的值,而不是直接存取environ。

POSIX.1和XPG3定义了某些环境变量。表7-1列出了由这两个标准定义并受到SVR4和4.3+BSD支持的环境变量。SVR4和4.3+BSD还使用了很多依赖于实现的环境变量。FIPS 151-1要求登录shell必须要定义环境变量HOME和LOGNAME。

了解更多关于UNIX POSIX API的信息

深入探讨C_shell_unix

查看Unix shell C++program

表7-1环境变量

| 变量 | 标准 | 实现说明 |

| --- | --- | --- |

| HOME | • | 起始目录 |

| LANG | • • • | 本地名 |

| LC_ALL | • • • | 本地名 |

| LC_COLLATE | • • • | 本地排序名 |

| LC_CTYPE | • • • | 本地字符分类名 |

| LC_MONETARY | • • • | 本地货币编辑名 |

| LC_NUMERIC | • • • | 本地数字编辑名 |

| LC_TIME | • • • | 本地日期/时间格式名 |

| LOGNAME | • • | 登录名 |

| NLSPATH | • | 消息类模板序列 |

| PATH | • | 搜索可执行文件的路径前缀表 |

| TERM | • | 终端类型 |

| TZ | • | 时区信息 |

在理解这些环境变量后,我们可以更好地掌握UNIX环境高级编程的精髓。学习如何设置和使用这些环境变量,对于控制shell的行为以及编写高效的UNIX脚本都是非常重要的。您可以参考更多关于Unix shell编程的信息来提升您的技能。

更多关于Unix_Based_Shell_C简单Shell源码

了解UNIX SHELL

掌握环境变量和shell编程,将使我们在UNIX系统中如鱼得水,能够高效地进行系统管理和自动化任务。