加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

linux --profile 文件详解+修改环境变量path路径实例

(2014-10-11 08:26:09)
标签:

嵌入式

分类: linux

su

vi /etc/profile

在export之前加上一句话

PATH=$PATH:.

:WQ

重启之后 

echo $PATH

会看到一系列的路径中有“.”这个路径,各个路径是以“:”分开的,然后在当前目录下执行文件就不需要加“./”这个命令了。这个命令指代当前路径。


pathmunge是linux系统redhat系列版本系统变量/etc/profile中的函数,如果想要把某个二进制程序可以在所有的shell不用全路径运行,就需要将其所在的目录放在profile中,用过的命令正是pathmunge (目录命)

 

pathmunge{

if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)";then

if["$2"="after"];then

PATH=$PATH:$1

else

PATH=$1:$PATH

fi

fi

export PATH

}

 

pathmunge大致的作用是:判断当前系统的PATH中是否有该命令的目录,如果没有,则判断是要将该目录放于PATH之前还是之后

 

echo "PATH" 输出PATH变量的内容以供egrep查询,

grep是利用正则表达式来搜索文本的工具,egrep用的是扩展的正则表达式 

-q:do not write anything to the standart output

“(^|:)$1($|:)”为要搜索的文本,()和|都是扩展的正则表达式,()查找组,|用或的方式查找字符串,^和$是基础的正则表达式,表示待查找的字符串在开头或结尾,&1是命令所在的目录,整个表达式的意思就是在PATH开头或以:开头,末尾是文本的末尾或以:为末尾的该目录

!表示查找的字符串不在PATH中

 

下来两个if很好理解,如果你想把该目录放于整个PATH变量的后边,pathmunge (目录名) after 则PATH=$PATH:$1,否则PATH=$1:PATH

export 将新设置的变量输出,使其在当前的shell和以后的shell中都生效



1、Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
2、常在/etc/profile文件中修改环境变量,在这里修改的内容是对所有用户起作用的。使用修改.bashrc文件进行环境变量的编辑,只对当前用户有用。使用修改 /etc/profile 文件进行环境变量的编辑,是对所有用户有用。

以下主要操作将在该文件中进行

3、如何添加环境变量。
 例如添加”NAME=liheng“ 。在profile文件的最后添加如下内容export NAME=liheng变量值liheng可以加引号也可以不加,效果一样。
4、在profile文件添加或修改的内容需要注销系统才能生效。

5、重复定义变量怎样理解。
经常出现的是对PATH变量的定义。
例如:在peofile文件默认对PATH变量都有设置PATH=¥¥¥¥¥¥¥(记不住了),在以后可能在对PATH设置,一般都加在 profile 文件的最后PATH=······(打个比方)。而系统之中认定的PATH=·······¥¥¥¥¥¥¥¥¥,也就是说相同名字的环境变量,后写入的先起作用(通俗地讲)。
6、特殊字符介绍。
例如在profile中有如下内容,通过以下内容说明特殊符号的用法。
export A=/q/jing:aaa/cc/ld
export B=.:/liheng/wang export A=/cd/cdr:$A
大家注意红色的符号:
: 表示并列含义,例如A变量值有多个,用:符号进行分离。
. 表示你操作的当前目录。例如pap命令会查找B环境变量。

7、在LInux下profile的拥有着:



如是/etc下的,是root。 如是/home下的,属于/home下的这个用户。


 

8、使用env命令显示所有的环境变量 。在命令提示符下键入env就行了。

  set命令显示所有本地定义的Shell变量。

9、常见的环境变量 PATH:决定了shell将到哪些目录中寻找命令或程序;

    HOME:当前用户主目录;

   MAIL:是指当前用户的邮件存放目录;

SHELL:是指当前用户用的是哪种Shell。

HISTSIZE:是指保存历史命令记录的条数
LOGNAME:是指当前用户的登录名。

HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。

LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。

另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有