环境变量

环境变量

环境变量: 在操作系统中用来指定操作系统运行环境的一些参数. 通常具备以下特征: (1) 字符串(本质); (2) 有统一的格式: 名=值[:值]; (3) 值用来描述进程环境信息

存储形式: 命令行参数类似. char *[]数组, 数组名: environ, 内部存储字符串, NULL作为结尾

使用形式: 与命令行参数类似

加载位置: 与命令行参数类似. 位于用户区, 高于stack的起始位置

引入环境变量表: 必须声明环境变量: extern char ** environ;

常见环境变量

按照惯例, 环境变量字符串都是name=value这样的形式, 大多数name有大写字母加下划线组成, 一般把name的部分叫做环境变量, value的部分则是环境变量的值. 环境变量定义了进程的运行环境, 一些比较重要的环境变量的含义如下:

PATH

可执行文件的搜索路径. ls命令也是一个程序, 执行它不需要提供完整的路径名/bin/ls. 然而执行当前目录下的程序a.out却需要提供完整的路径名./a.out, 这是因为PATH环境变量的值里包含了ls命令所在的目录/bin, 却不包含a.out所在的目录. PATH环境变量的值可以包含多个目录, 用:隔开. 在shell中使用echo $PATH可查看PATH的值

SHELL

当前shell, 它的值通常是/bin/bash

TERM

当前终端类型, 在图形界终端界面下它的值通常是xterm, 终端类型决定了一些程序的输出显示方式, 比如图形界面可以显示汉字, 而字符终端一般不行

LANG

语言和locale, 决定了字符编码以及时间, 货币等信息的显示格式

HOME

当前用户主目录的路径, 很多程序需要在主目录下保护保存配置文件, 使得每个用户在运行该程序时都有一个自己的一套配置

环境变量相关函数

#include <stdlib.h>

getenv

char *getenv(const char *name);
获取环境变量的值
返回:
  成功: 返回环境变量的值
  失败: NULL

setenv

int setenv(const char *name, const char *value, int overwrite);
设置环境变量的值
参数:
  overwrite: 1 --> 覆盖原有环境变量; 0 --> 不覆盖
返回值: 成功 0, 失败 -1

unsetenv

int unsetenv(const char *name);
删除环境变量name的定义
返回值: 成功 0, 失败 -1
注意事项: name不存在仍返回0(成功), 当name命名为"ABC="时则会报错

posted @ 2019-04-19 21:07  张飘扬  阅读(353)  评论(0编辑  收藏  举报