linux环境变量编程(一)

一、介绍
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,本质一个指针,想要查看变量的值,需要加上“$”

PATH:指定可执行程序的搜索路径(命令也属于程序)
LD_LIBRARY_PATH:指定动态库的搜索路径
在这里插入图片描述
图片来源于网络

二、分类:
1)环境变量:相当于全局变量,存在于所有的Shell中,具有继承性;
2)本地变量:相当于局部变量只存在当前Shell中,本地变量包含环境变量,非环境变量不具有继承性。

三、常用的环境变量
1、PATH:指令的路径
2、HOME:用户工作目录
3、HISTSIZE:历史命令的数目
4、LOGNAME:显示用户的登录名
5、HOSTNAME:主机名
6、SHELL:指定用户当前使用的解析器

四、操作环境变量
1、命令行操作
1)echo 打印
2)export 临时修改环境变量
3)env 显示所有环境变量
4)set 显示本地定义的shell变量
5)unset 清除环境变量
6)readonly 设置只读环境变量
7)/usr/bin/vi .bashrc/或者/bin/vi .bashrc/
8)vi .bashrc /修改.bashrc文件即可/

2、程序操作,修改配置文件.bashrc
1)文件读写操作,在配置文件.bashrc添加自己的环境变量
2)修改环境表,extern char ** environ;//envioron存储环境表的首地址
方式1

# include<stdio.h>
# include<string.h>

int main(void)
{
    extern char ** environ;
    char ** p = environ;

    while(*p){
        printf("%s\n",*p);
        p++;
    }
    return 0;
}

方式2

# include<stdio.h>
# include<string.h>

int main(void)
{
    extern char ** environ;
    char ** p = environ;
    while(*p){
        if(strncmp(*p,"PATH=",5) == 0){/*环境变量的格式是:变量名=具体内容*/
            printf("%s\n",*p);
            break;
        }
        p++;
    }
}

方式3

#include<stdio.h>
#include<stdlib.h>
/*第三个参数就是环境表的首地址*/
int main(int argc, char ** argv, char ** env)
{
    /*两种方法基本相同,只不过char ** env这种方法只能在main函数中使用;而extern char ** environ这种方法可以再任何一个函数中使用*/
    extern char ** environ;
    printf("env=%p\nenviron=%p\n",env,environ);/*输出结果显示,两个首地址为同一个地址,即都是环境表首地址*/

    return 0;
}

方法4 专用函数

#include<stdlib.h>
char * getenv(const char * name);
/*返回值为获取的环境变量首地址,name为需要匹配的字符串,只会去除“name=”的内容*/
int putenv(char * string);
/*string为创建的名字及内容创建环境变量,存在就替换*/
int setenv(const char * name,const char *value,int overwrite);
/*设置一个环境变量,第一个参数是变量名,第二个是变量值(内容),第三个参数,新建或替换覆盖(overwrite为0,不替换;非零替换)*/
int unsetenv(const char * name);/*取消设置*/
int clearenv(void);/*清空*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    extern char ** environ;

    char * path_value = getenv("PATH");/*获取PATH的内容,返回值为PATH字符串的首地址,也就是环境表数组中的PATH这个元素的首地址*/
    printf("PATH=%s\n",path_value);

    /*创建一个自定义环境变量*/
    putenv("KANGRUOJIN=123456789");/*等号左边是变量名,等号右边是内容(变量值),二者与等号共同组成这个字符串参数*/
    printf("KANGRUOJIN=%s\n",getenv("KANGRUOJIN"));
    putenv("KANGRUOJIN=987654321");/*覆盖原有内容*/
    printf("KANGRUOJIN=%s\n",getenv("KANGRUOJIN"));

    setenv("KANGRUOJIN","ABCDEFG",0);/*ovwrite为0不会覆盖*/
    printf("KANGRUOJIN=%s\n",getenv("KANGRUOJIN"));

    setenv("KANGRUOJIN","GFEDCBA",1);/*ovwrite为1会覆盖*/
    printf("KANGRUOJIN=%s\n",getenv("KANGRUOJIN"));
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值