在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 2767|回复: 7

[讨论] 基于Linux的环境变量的定制

[复制链接]
发表于 2010-8-31 09:23:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 arm009 于 2010-8-31 09:26 编辑

linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。本文基于RedHat 9.0,详细讲解了环境变量定制的问题。

2、变量简介

Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。

3、定制环境变量

    环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的Shell。根据发行版本的情况,bash有两个基本的系统级配置文件:/etc/bashrc/etc/profile。这些配置文件包含两组不同的变量:shell变量和环境变量。前者只是在特定的shell中固定(如bash),后者在不同shell中固定。很明显,shell变量是局部的,而环境变量是全局的。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量。下面通过几个实例来说明。

3.1 使用命令echo显示环境变量
--------------------------------------------------------------------------------
#
本例使用echo显示常见的变量HOME
$ echo $HOME   
/home/lqm
--------------------------------------------------------------------------------
3.2
设置一个新的环境变量

--------------------------------------------------------------------------------
$ export HELLO=
Hello!

$ echo $HELLO
Hello!
--------------------------------------------------------------------------------
3.3
使用env命令显示所有的环境变量
--------------------------------------------------------------------------------
$ env
SSH_AGENT_PID=1875
HOSTNAME=lqm
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
……
--------------------------------------------------------------------------------
3.4  
使用set命令显示所有本地定义的Shell变量
--------------------------------------------------------------------------------
$ set
BASH=/bin/bash
……
--------------------------------------------------------------------------------
3.5  
使用unset命令来清除环境变量
--------------------------------------------------------------------------------
$ export TEST=
test      #增加一个环境变量TEST
$ env | grep TEST           #
此命令有输出,证明环境变量TEST已经存在了

TEST=test
$ unset $TEST                #
删除环境变量TEST
$ env | grep TEST           #
此命令无输出,证明环境变量TEST已经存在了

--------------------------------------------------------------------------------
3.6  
使用readonly命令设置只读变量
如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:

--------------------------------------------------------------------------------
$ export TEST="Test..."                                        #
增加一个环境变量TEST
$ readonly TEST                                                   #
将环境变量TEST设为只读

$ unset TEST                                                        #会发现此变量不能被删除
-bash: unset: TEST: cannot unset: readonly variable
$ TEST="New"                                                     #
会发现此变量不能被修改
-bash: TEST: readonly variable
--------------------------------------------------------------------------------
3.7  
C程序来访问和设置环境变量
对于C程序的用户来说,可以使用下列三个函数来设置或访问一个环境变量。
getenv()访问一个环境变量。输入参数是需要访问的变量名字,返回值是一个字符串。如果所访问的环境变量不存在,则会返回NULL
setenv()在程序里面设置某个环境变量的函数。
unsetenv()清除某个特定的环境变量的函数。
另外,还有一个指针变量environ,它指向的是包含所有的环境变量的一个列表。下面的程序可以打印出当前运行环境里面的所有环境变量:
--------------------------------------------------------------------------------
#include <stdio.h>
extern char**environ;
int main ()
char**var;
for (var =environ;*var !=NULL;++var)
printf ("%s \n ",*var);
return 0;
}
--------------------------------------------------------------------------------
3.8      
通过修改环境变量定义文件来修改环境变量。
需要注意的是,一般情况下,这仅仅对于普通用户适用,避免修改根用户的环境定义文件,因为那样可能会造成潜在的危险。
--------------------------------------------------------------------------------
$cd                                     #
到用户根目录下
$ls -a                                  #查看所有文件,包含隐藏的文件
$vi .bash_profile                 #修改环境变量定义文件
--------------------------------------------------------------------------------
然后编辑你的PATH声明,其格式为:
PATH=$PATH:<ATH 1>:<ATH 2>:<ATH 3>:------:<;PATH N>
   你可以自己加上指定的路径,中间用冒号隔开。环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:$source .bash_profile
  需要注意的是,最好不要把当前路径”./”放到PATH里,这样可能会受到意想不到的攻击。完成后,可以通过$ echo $PATH查看当前的搜索路径。这样定制后,就可以避免频繁的启动位于shell搜索的路径之外的程序了。
4  总结

    通过以上的设置,你可以有一个比较方便有效的环境来提高你的工作效率了。

更多内容请查询:http://www.fly.com.cn
发表于 2010-9-2 14:15:53 | 显示全部楼层
学习了,多谢!
发表于 2010-9-15 10:51:09 | 显示全部楼层
多谢啦~~~
发表于 2010-9-26 14:44:37 | 显示全部楼层
好东西路过
发表于 2014-9-13 11:25:19 | 显示全部楼层
服务器S40,S41和S44已经被配置到相同的状态,大家用同一个用户名登录40/41/44,环境状态是一样的。但是,大家在40/41/44的密码是独立的,比如说,你登陆S40修改了密码,新的密码只在S40生效,S41和S44还是原来的密码。
/home是每个用户的宿主目录,大家登录的默认目录。建议大家在这里设置好登录的环境变量。
/work是挂在44上的工作目录,建议大家把主要的工作目录放在这里。以后随着工作量的增加可以加挂硬盘。
/var/cvs是cvs库目录,请大家把阶段性的代码(比如仿真ok的,修改bug的)check in到cvs中。后面附有cvs使用说明。注意不要把仿真或者综合等的中间文件传到cvs,文件巨大且数量众多。上传前用du –sk 检查一下目录大小是一个比较合适的做法。注意,不要直接在cvs目录下做任何操作,读取,修改,新建,删除等都不允许。
发表于 2014-9-13 11:26:04 | 显示全部楼层
谢谢啦
发表于 2014-9-13 11:34:46 | 显示全部楼层
好东西啊
发表于 2015-1-11 13:23:54 | 显示全部楼层
去年装sentaurus时调环境变量调了半天,要是早点遇到这篇文章就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-12 07:55 , Processed in 0.036729 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表