Linux中与环境变量相关的函数

1、在终端可以通过env、set命令查看当前的环境变量

2、通过main函数中的第三个参数可以得到当前进程的环境变量列表

int main(int argc , char *argv[] , char *env[]);

其中argv和env是一个指针数组,数组的最后一个元素为NULL

3、打印当前进程的环境变量

int main(int argc , char *argv[] , char *env[]){
  char **p = env;
  while(*p){
    printf("%s\n",*env);
    env++;
  }
}

4、getenv获得指定的环境变量

char * getenv("环境变量名")

int main(){
  char * p = getenv("PATH");
  if(p){
    printf("%s",p);
  }
  else{
    return;
  }  
}

5、putenv设置环境变量

int main(int argc , char ** argv , char **env){
  printf("%s\n",getenv("PATH"));
  putenv("PATH=/home/hello");
  printf("%s\n",getenv("PATH"));
}

输出结果:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/home/hello

6、setenv设置环境变量

首先要说明的是,通过此函数并不能添加或修改 shell 进程的环境变量,或者说通过setenv函数设置的环境变量只在本进程,而且是本次执行中有效。如果在某一次运行程序时执行了setenv函数,进程终止后再次运行该程序,上次的设置是无效的,上次设置的环境变量是不能读到的

setenv("变量名","新变量值","是否重写")

int main(int argc , char ** argv , char **env){
  printf("%s\n",getenv("PATH"));
  int res = setenv("PATH","/home/hello",1); //第三个参数为1代表重写
  if(res == -1)
    return;
  printf("%s\n",getenv("PATH"));
}

输出结果:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

/home/hello

若第三个参数为0,即环境变量已经存在,则并不改变它的值

输出结果:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

7、unsetenv删除某个环境变量

unsetenv("环境变量名")

int main(int argc , char ** argv , char **env){
        printf("%s\n",getenv("PATH"));
        unsetenv("PATH");
        printf("%s\n",getenv("PATH"));
}

输出结果:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PATH被删除,所以只输出一行

时间: 2024-08-02 06:48:17

Linux中与环境变量相关的函数的相关文章

Linux中的环境变量PATH

首先一点Linux中的每个命令其本质是一个可执行的文件,以ls命令为例.通过命令:$:whereis ls可以查看ls命令的位置在/bin/目录下.当用$:ls -l /bin/ls命令查看文件/bin/ls的属性时,得到如下结果: 其实我们在任意目录下执行的ls命令时,其实执行的是位于/bin目录下的ls文件.那么当在任意目录下执行各种命令时,是怎么找到各自的命令的呢?这就是PATH的作用.查看环境变量PATH的内容如下: PATH的作用就是,当输入命令的时候,Linux会去查找PATH里面记

辛星浅谈Linux中的环境变量

全局变量和本地环境变量: bash  shell使用一种称为环境变量的特性来存储关于shell会话和工作环境的信息,这也是环境变量的名字的由来.该特性还允许我们把数据存储在内存中,以便于在shell中运行的程序或者脚本中访问它们.bash  shell中共有两种类型的环境变量:全局变量和本地变量. 全局环境变量在shell会话和该shell产生的任何子进程中都可见.而本地变量则只在创建它们的shell中可见.在产生需要父进程信息的子进程的应用程序中,这便体现了全局变量的重要作用.系统环境变量使用

Linux中特殊环境变量

1.环境变量简介: 环境变量是具有特殊名字的一个特定对象,包含了一个或多个应用程序运行所需的信息.(例如环境变量PATH,可执行程序的搜索路径,当要求系统运行一个程序,而没告诉系统它的具体路径时,系统就要在PTAH值的路径中寻找此程序,找到去执行). 2.常见环境变量(一般都为大写): PATH :/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin.指定SHELL命令的路径,包含了一系列由冒号分隔开的目录,系统就从这些目录里寻找可执行文件.如

Linux中的环境变量

什么是环境变量 环境变量也叫全局变量,当前进程的的环境变量会被该进程的子进程继承. 查看环境变量 env   查看环境变量 set   查看环境变量和自定义变量 一些常见的环境变量的说明 [[email protected] ~]# env //查看环境变量 HOSTNAME=BASE //主机名 TERM=linux SHELL=/bin/bash //使用的是哪一个shell HISTSIZE=1000 //记录历史命令的条数 SSH_CLIENT=192.168.220.1 54798 5

Linux中的环境变量配置文件

这篇文章是我之前整理,此次上传.因为刚刚接触linux,一直对里面的变量设置是混淆的,所以查资料整理了一下,以便日后查询. Shell 环境依赖于多个文件的设置.用户并不需要每次登录后都对各种环境变量进行手工设置,通过环境设置文件,用户的工作环境的设置可以在登录的时候自动由系统来完成.环境设置文件有两种,一种是系统环境设置文件,另一种是个人环境设置文件. 1)系统中的用户工作环境设置文件 登录环境设置文件:/etc/profile 非登录环境设置文件:/etc/bashrc 2)用户设置的环境设

Linux有问必答:如何在Linux中修改环境变量PATH

提问: 当我试着运行一个程序时,它提示“command not found”. 但这个程序就在/usr/local/bin下.我该如何添加/usr/local/bin到我的PATH变量下,这样我就可以不用指定路径来运行这个命令了. 在Linux中,PATH环境变量保存了一系列的目录用于用户在输入的时候搜索命令.PATH变量的值由一系列的由分号分隔的绝对路径组成.每个用户都有特定的PATH环境变量(由系统级的PATH变量初始化). 要检查用户的环境变量,用户模式下运行下面的命令: $ echo $

在linux中配置环境变量

JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 根据Linux系统的版本选择64位或32位下载,官方现提供rpm和tar.gz两种版本下载. 安装: [[email protected] cdrom]# rpm -ivh jdk-8u25-linux-x64.rpm 配置jdk环境变量 方法一:在Shell下设置变量(该方法只对当前的shell有效,如果打开另

linux中添加环境变量(python为例)

最近想用Django搭建个人博客,之前学了些python基础语法,准备边学习Django边实战操作.自己有一个阿里云服务器,用的centOS,自带的是python2.7版本,我直接安装了python3.5版本.结果问题从此开始... python3.5在安装时设置了软连接,所以直接输入python就是调用python3.5版本,但是再安装其他包的时候就没这么幸运了.先是安装Django之后,使用 import django django.getversion() 可以正常显示django版本,说

Linux中的环境变量配置文件及其作用

登录相关的配置文件: /etc/profile 范围:对所有用户生效 作用: a.定义USER变量 b.定义LOGNAME变量 c.定义MAIL变量 d.定义PATH变量 e.定义HOSTNAME变量 f.定义HISTSIZE变量 g.定义umask值 i.调用/etc/profile.d/*.sh文件 /etc/profile.d/*.sh 范围:对所有用户生效 说明:这是一族sh文件,没个都会被调用 例如: /etc/profile.d/lang.sh 作用:调用/etc/sysconfg/