练习使用setenv, export等环境变量相关的函数和命令

setenv函数

作用:改变或增加环境变量

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

参数value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。注释stdlib.h在Linux和windows中略不同,比如setenv函数是用在linux中的,在Windows中没有setenv函数而用putenv来代替。

定义函数:int setenv(const char *name,const char  *value,int overwrite);

函数说明setenv函数用来改变环境变量或增加环境变量的内容,参数name为环境变量名称字符串,参数value则为变量的内容,参数overwrite用来决定是否要改变已存在的环境变量。如果没有此环境变量,则无论overwrite为何值均添加此环境变量。若此环境变量存在,overwrite不为0时,原内容会被改为参数value所指的变量内容,当overwrite为0时,则参数会被忽略。返回值执行成功则返回0,有错误发生时,返回-1

——————————————————————————————————————————————————Linux命令:setenv

功能说明:查询或显示环境变量

语 法:setenv [变量名称][变量值]

补充说明:setenv为tsch中查询或设置环境变量的指令。

英文版本,欢迎翻译:

ABOUT SETENV

In C shell sets the value of an environment variable.

SYNTAX

setenv [var [word]]

var Variable of the set command. word Set instructions or information of the variable.

EXAMPLES

setenv PATH "/bin:/usr/bin:/usr/sbin" - Sets the environment path to search for files in the /bin,

/usr/bin and /usr/sbin directory.

翻译:

setenv说明:

用于在c shell中设置环境变量的值用法:

setenv ENVVAR value

其中,ENVVAR为所要设置的环境变量的名,value为所要设置的环境变量的值

例如:

setenv PATH "/bin:/usr/bin:/usr/sbin:"设置环境path的搜索路径为/bin,/usr/bin以及/usr/sbin

常用用法

# 功能说明:设置或显示环境变量。
# export [-fnp][变量名称]=[变量设置值]
# 只在本次登录中有效

# 再增加的路径用:追加
export PATH=$PATH:/home/jason001

说明

在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。

参数:

 -f  代表[变量名称]中为函数名称。
 -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
 -p  列出所有的shell赋予程序的环境变量

延伸

export设置环境变量是暂时的,只在本次登录中有效,可修改如下文件来使命令长久有效。

1. 修改profile文件

#vi /etc/profile

在里面加入:

export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

这个在我们的机器上是大家共用的,建议不修改这个,只修改自己根路径下的。

2. 修改本id根路径下的.bashrc或.bash_profile文件:

# vi /home/zhaodw/.bash_profile

在里面加入:

export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

注意

1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出; 

2、一个shell中的系统环境变量才会被复制到子shell中(用export定义的变量); 
3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。 
4、不用export定义的变量只对该shell有效,对子shell也是无效的。


你可能感兴趣的:(操作系统)