环境表,顾名思义就是存放环境变量的表格。每个程序都接收到一张环境表。与参数表一样,环境表也是一个字符指针数组,其中每个
指针包含一个以n u l l结束的字符串的地址。全局变量e n v i r o n则包含了该指针数组的地址。
extern char **environ;
如果我们要访问整个环境变量表!就要全局变量
environ来访问!
下面我们通过程序来获取整个环境变量表!
-
#include <stdio.h>
-
-
extern char **environ;
-
int main(int argc,char **argv)
-
{
-
while(*environ != NULL)
-
{
-
printf("%s\n",*environ);
-
environ++;
-
}
-
-
return 0;
-
}
编译执行:
-
root@tay:/home/tay/code/env# gcc -o env env.c
-
root@tay:/home/tay/code/env# ./env
-
SHELL=/bin/bash
-
TERM=xterm
-
XDG_SESSION_COOKIE=e8589f7707ef957b0ca264d800000004-1451208617.431403-152800422
-
OLDPWD=/home/tay/code
-
USER=root
-
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:
-
SUDO_USER=tay
-
SUDO_UID=1000
-
USERNAME=root
-
MAIL=/var/mail/root
-
PATH=/usr/local/arm/arm-2009q3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
-
PWD=/home/tay/code/env
-
LANG=zh_CN.UTF-8
-
SHLVL=1
-
SUDO_COMMAND=/bin/su
-
HOME=/root
-
LANGUAGE=zh_CN:
-
LOGNAME=root
-
LESSOPEN=| /usr/bin/lesspipe %s
-
SUDO_GID=1000
-
DISPLAY=:0.0
-
LESSCLOSE=/usr/bin/lesspipe %s %s
-
XAUTHORITY=/home/tay/.Xauthority
-
COLORTERM=gnome-terminal
-
_=./env
我们通过这个方法就可以获取整个环境变量!同样,我们也可以用env指令获取。
/////////////////////////////////////////////////////////////////////////////////////////////
很经常我们需要查看某个环境变或者设置一个环境变量!我可以通过下面的方法:
1、显示某一个环境变量
-
tay@tay:~$ echo $HOME
-
/home/tay
-
tay@tay:~$
2、设置一个新的环境变量
2.1
-
tay@tay:~$ export HELLO="world"
-
tay@tay:~$ echo $HELLO
-
world
-
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) |