关于linux操作系统的环境变量(env)

Linux C函数环境变量:

可以使用下列三个函数来设置或访问一个环境变量。
    
    getenv(取得环境变量内容)

表头文件
    #include<stdlib.h>
定义函数
    char * getenv(const char *name);
函数说明
    getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。
返回值
    执行成功则返回指向该内容的指针,找不到符合的环境变量名称则返回NULL。
范例
    #include<stdlib.h>
mian()
{
char *p;
if((p = getenv(“USER”)))
printf(“USER=%s/n”,p);
}
执行
    USER = root
   
    setenv(设置某个环境变量)

表头文件
    #include<stdlib.h>
定义函数
    int setenv(const char *name,const char * value,int overwrite);
函数说明
    setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。
参数
    value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。如果 overwrite不为0,而该环境变量原已有内容,则原内容会被改为参数value所指的变量内容。如果overwrite为0,且该环境变量已有内容,则参数value会被忽略。
返回值
    执行成功则返回0,有错误发生时返回-1。
错误代码
    ENOMEM 内存不足,无法配置新的环境变量空间
范例
    #include<stdlib.h>
main()
{
char * p;
if((p=getenv(“USER”)))
printf(“USER =%s/n”,p);
setenv(“USER”,”test”,1);
printf(“USER=%s/n”,getenv(“USER”));
unsetenv(“USER”);
printf(“USER=%s/n”,getenv(“USER”));
}
执行
    USER = root
USER = test
USER = (null)

    unsetenv()清除某个特定的环境变量的函数。

    另外,还有一个指针变量environ,它指向的是包含所有的环境变量的一个列表。下面的程序可以打印出当前运行环境里面的所有环境变量:

 

实践例子:(env.c)

[c-sharp]  view plain copy
  1. #include <stdio.h>  
  2. extern char**environ;  
  3. int main ()  
  4. {  
  5.    char**var;  
  6.    char *str;  
  7.    for (var =environ;*var !=NULL;++var)  
  8.    printf ("%s/n",*var); //output all env  
  9.    str = (char *)getenv("CROSS_COMPILE"); //get CROSS_COMPILE env  
  10.    printf ("/n/n###################################/n/n");  
  11.    printf ("CROSS_COMPILE = %s/n",str);     
  12.    return 0;  
  13. }  



编译运行:

[root@localhost liuxltest]# gcc -o env env.c 
[root@localhost liuxltest]# ./env            
HOSTNAME=localhost.localdomain
TERM=ansi
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.2.44 1137 22
CVSROOT=:pserver:hoston.hu@10.22.1.75:/data/code/CVS
SSH_TTY=/dev/pts/4
USER=root
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:
SSH_AUTH_SOCK=/tmp/ssh-ouHqd15030/agent.15030
MAIL=/var/spool/mail/root
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/opt/eldk/usr/bin:/opt/eldk/bin
INPUTRC=/etc/inputrc
PWD=/home/liuxltest
LANG=en_US.UTF-8
SHLVL=1
HOME=/root
LOGNAME=root
CVS_RSH=ssh
SSH_CONNECTION=192.168.2.44 1137 172.18.8.26 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
CROSS_COMPILE=ppc_85xx-
G_BROKEN_FILENAMES=1
_=./env
OLDPWD=/home/liuxltest/cfcfg


###################################

CROSS_COMPILE = ppc_85xx-
[root@localhost liuxltest]#

 

对于系统环境变量修改的操作:

      在/etc/profile文件中修改,在这里修改的内容是对所有用户起作用的。
以下主要操作将在该文件中进行。

1、如何添加环境变量。
例如添加”NAME=liheng“ 。
在profile文件的最后添加如下内容export NAME=liheng
变量值liheng可以加引号也可以不加,效果一样。

2、在profile文件添加或修改的内容需要注销系统才能生效。

3、重复定义变量怎样理解。
经常出现的是对PATH变量的定义。
例如:在peofile文件默认对PATH变量都有设置PATH= ¥¥¥¥¥¥¥(记不住了),在以后可能在对PATH设置,一般都加在profile文件的最后PATH=······(打个比方)。而系统之中认定的PATH=·······¥¥¥¥¥¥¥¥¥,也就是说相同名字的环境变量,后写入的先起作用(通俗地讲)。大家一定要注意。

4、特殊字符介绍。
例如在profile中有如下内容,通过以下内容说明特殊符号的用法。
export A=/q/jing:aaa/cc/ld
export B=.:/liheng/wang
export A=/cd/cdr:$A
注意:
: 表示并列含义,例如A变量值有多个,用:符号进行分离。
. 表示你操作的当前目录。例如pap命令会查找B环境变量。在/home键入pap命令,系统首先在/home目录下(即当前路径)查找关于 B 的内容,如果没有在/liheng/wang目录下查找关于B的内容。
$ 表示该变量本次定义之前的值,例如$A代表/q/jing:aaa/cc/ld。也就是说A=/cd/cdr:/q/jing:aaa/cc/ld

5、使用env命令显示所有的环境变量 。在命令提示符下键入env就行了。set命令显示所有本地定义的Shell变量。

6、常见的环境变量
PATH:决定了shell将到哪些目录中寻找命令或程序
HOME:当前用户主目录
MAIL:是指当前用户的邮件存放目录。
SHELL:是指当前用户用的是哪种Shell。
HISTSIZE:是指保存历史命令记录的条数
LOGNAME:是指当前用户的登录名。
HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
PS1:是基本提示符,对于root用户是#,对于普通用户是$。
PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”。
# PS1=" Hello,My NewPrompt :) "

7、使用修改.bashrc文件进行环境变量的编辑,只对当前用户有用。
使用修改 /etc/profile 文件进行环境变量的编辑,是对所有用户有用。大家一定要注意区别。

8、profile文件在系统启动时将被运行。大家可以在里面加入其他命令,但是一定要加正确,不然的话系统会启动不起来的。

简单用法:

若只是进行简单的修改环境变量,可以直接使用下面命令:

或者直接使用env命令

       [root@localhost liuxltest]#env 

就可以出现当前所有的环境变量

 

若要对环境变量进行修改,例如将env中的CROSS_COMPILE = ppc_85xx- 改为CROSS_COMPILE = ,则直接

       [root@localhost liuxltest]# CROSS_COMPILE =

然后在env看下就发现已经修改了,修改后为CROSS_COMPILE =

就是这么简单

 

注释:

进行make时出现下列的错误:

make -C /usr/src nux-2.6.26 M=/home/iprdebug/modules 
/usr/src nux-2.6.26/scripts/gcc-version.sh: line 25: ppc_85xx-gcc: command not found
/usr/src nux-2.6.26/scripts/gcc-version.sh: line 26: ppc_85xx-gcc: command not found
make[1]: ppc_85xx-gcc: Command not found

........

........

则表明gcc编译时的系统环境变量修改了,因此就可以按照上面的方法将环境变量CROSS_COMPILE 赋值为空就行了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值