Linux —— 环境变量

目录

一,常见环境变量

二,查看环境变量

三,环境变量相关命令

四,环境变量的组织方式

五,通过代码获取环境变量

六,通过系统调用获取或设置环境变量

七,环境变量具有全局性


        环境变量(environment variables),一般指在操作系统中用来指定操作系统运行环境的一些参数;如在编写的C/C++代码链接时,所链接的动态、静态库的位置,就是通过相关环境变量帮助编译器进行查找的;环境变量通常具有特殊用途,具有全局特性;

一,常见环境变量

  • PATH,指定命令的搜索路径,辅助系统进行指令查找;自定义程序执行时如没有设置PATH就需添加路径;
  • HOME,指定用户的主工作目录;
  • SHEEL,当前Shell,其值通常为/bin/bash;

二,查看环境变量

echo $NAME //NAME 环境变量名称
[wz@192 ~]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/wz/.local/bin:/home/wz/bin
[wz@192 ~]$ echo $HOME
/home/wz
[wz@192 ~]$ echo $SHELL
/bin/bash

用户目录下.bash_profile文件;

三,环境变量相关命令

  • echo,显示环境变量值;
  • export,设置一个新的环境变量,可将本地变量输出成环境变量;
  • env,显示所有环境变量;
  • unset,清除环境变量;
  • set,显示本地定义的shell变量和环境变量;

注,这些命令属内建命令;

//定义本地变量,只能在当前shell命令解释器内使用,不可继承
[wz@192 ~]$ LocalVar="localvar"
[wz@192 ~]$ echo $LocalVar 
localvar
[root@192 Desktop]# export myenv="hello world"
[root@192 Desktop]# echo $myenv
hello world
[root@192 Desktop]# env | grep myenv
myenv=hello world

四,环境变量的组织方式

        每个程序都会收到一张环境表,环境表是一个字符指针数组,每个字符指针均指向一个以”\0“结尾的环境字符串;

五,通过代码获取环境变量

命令行参数的作用是对同一程序设计出不同业务功能;

//通过命令行第三个参数
//argc表示参数个数
#include<stdio.h>
int main(int argc, char* argv[], char* env[])
{
    int i = 0;
    for(; env[i]; i++)
    {
        printf("%s\n", env[i]);                                               
    }
    return 0;
}
//通过第三方变量environ
//libc中定义的全局变量environ指向环境表,该变量不包含在任何头文件中需用extern声明
#include<stdio.h>
int main(int argc, char* argv[])
{
    extern char** environ;
    int i = 0;
    for(; environ[i]; i++)
    {
        printf("%s\n", environ[i]);                                               
    }
    return 0;
}
[root@192 Desktop]# ./target 
XDG_VTNR=1
XDG_SESSION_ID=353
HOSTNAME=192.168.37.131
SHELL=/bin/bash
TERM=xterm-256color
HISTSIZE=1000
USER=root
LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/home/wz/Desktop
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
XDG_SEAT=seat0
HOME=/root
LOGNAME=root
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
LESSOPEN=||/usr/bin/lesspipe.sh %s
DISPLAY=:0
XAUTHORITY=/root/.xauth6zDGCW
_=./target
OLDPWD=/root

六,通过系统调用获取或设置环境变量

  • putenv
  • getenv
#include<stdio.h>
#include <stdlib.h>
int main()
{   
  printf("%s\n", getenv("PATH"));
  return 0;
}
[root@192 Desktop]# ./target 
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

七,环境变量具有全局性

  • 环境变量通常具有全局性,可被子进程继承;
  • 是通过第三个参数,被子进程继承的;
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char * env = getenv("LocalVar");
    if(env)
    {
        printf("%s\n", env);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值