Chinaunix首页 | 论坛 | 博客
  • 博客访问: 398965
  • 博文数量: 75
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 645
  • 用 户 组: 普通用户
  • 注册时间: 2015-06-03 18:24
文章分类

全部博文(75)

文章存档

2019年(1)

2018年(20)

2017年(14)

2016年(10)

2015年(30)

分类: LINUX

2016-01-31 19:44:39


环境表,顾名思义就是存放环境变量的表格。每个程序都接收到一张环境表。与参数表一样,环境表也是一个字符指针数组,其中每个
指针包含一个以n u l l结束的字符串的地址。全局变量e n v i r o n则包含了该指针数组的地址。

extern char **environ;

如果我们要访问整个环境变量表!就要全局变量environ来访问!


下面我们通过程序来获取整个环境变量表!

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. extern char **environ;
  3. int main(int argc,char **argv)
  4. {
  5.     while(*environ != NULL)
  6.     {
  7.         printf("%s\n",*environ);
  8.         environ++;
  9.     }

  10.     return 0;
  11. }

编译执行:

点击(此处)折叠或打开

  1. root@tay:/home/tay/code/env# gcc -o env env.c
  2. root@tay:/home/tay/code/env# ./env
  3. SHELL=/bin/bash
  4. TERM=xterm
  5. XDG_SESSION_COOKIE=e8589f7707ef957b0ca264d800000004-1451208617.431403-152800422
  6. OLDPWD=/home/tay/code
  7. USER=root
  8. LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
  9. SUDO_USER=tay
  10. SUDO_UID=1000
  11. USERNAME=root
  12. MAIL=/var/mail/root
  13. PATH=/usr/local/arm/arm-2009q3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
  14. PWD=/home/tay/code/env
  15. LANG=zh_CN.UTF-8
  16. SHLVL=1
  17. SUDO_COMMAND=/bin/su
  18. HOME=/root
  19. LANGUAGE=zh_CN:
  20. LOGNAME=root
  21. LESSOPEN=| /usr/bin/lesspipe %s
  22. SUDO_GID=1000
  23. DISPLAY=:0.0
  24. LESSCLOSE=/usr/bin/lesspipe %s %s
  25. XAUTHORITY=/home/tay/.Xauthority
  26. COLORTERM=gnome-terminal
  27. _=./env
我们通过这个方法就可以获取整个环境变量!同样,我们也可以用env指令获取。


/////////////////////////////////////////////////////////////////////////////////////////////
很经常我们需要查看某个环境变或者设置一个环境变量!我可以通过下面的方法:
1、显示某一个环境变量

点击(此处)折叠或打开

  1. tay@tay:~$ echo $HOME
  2. /home/tay
  3. tay@tay:~$
2、设置一个新的环境变量
2.1

点击(此处)折叠或打开

  1. tay@tay:~$ export HELLO="world"
  2. tay@tay:~$ echo $HELLO
  3. world
  4. tay@tay:~$
2.2在/etc/profile文件中添加变量【对所有用户生效(永久的)】

# vi /etc/profile
export HELLO=good
注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。

2.3在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
例如:编辑guok用户目录(/home/guok)下的.bash_profile
$ vi /home/guok/.bash.profile
添加如下内容:
export HELLO=good
注:修改文件后要想马上生效还要运行$ source /home/hzs/.bash_profile不然只能在下次重进此用户时生效。



/////////////////////////////////////////////////////////////////////////////////
环境变量的种类:
按生命周期来分,可以划分为两类:
1、永久环境变量:需要修改配置文件,变量永久有效
2、临时环境变量:使用export命令声明即可,变量在关闭shell时失效




阅读(2113) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~