注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

SunOfMay的博客

At.163

 
 
 

日志

 
 

Ubuntu环境变量涉及的几个文件及说明.  

2013-05-20 17:10:19|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

文章内容多数来源于网络. 感谢原作者!

查看某一个用户使用的是什么 shell 可以通过 finger [USERNAME] . 没有的话可以执行apt-get install finger进行安装.

/etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
/etc /environment : 在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变量。
~/.profile :  在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,设置一些环境变量,执行用户的.bashrc文件。
/etc/bashrc : 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bashrc : 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

bash有两个基本的系统级配置文件:/etc/bashrc和/etc/profile。这些配置文件包含两组不同的变量:shell变量和环境变量。前者只是在特定的shell中固定(如bash),后者在不同shell中固定。很明显,shell变量是局部的,而环境变量是全局的。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量。bash的初始化文件叫做 profile。每个使用bash的用户都有一个.profile文件在他的用户目录里(也可能是.bash_profile)。bash在每次启动时都读取这个文件,并执行所有包含的命令。
bashrc是在系统启动后就会自动运行, profile是在用户登录后才会运行。用source bashrc更新bashrc,用source profile更新profile.

/etc/bashrc: 系统所有用户共用环境变量. # Ubuntu没有此文件,对应的是/ect/bash.bashrc

~/.profile:  每个用户都可使用该文件输入专用于自己使用的shell信息. 当用户登录时,该文件仅仅执行一次.
~/.bashrc    单用户专用. 继承自/etc/profile中的变量.  该文件包含专用于你的bash shell的bash信息. source .bashrc生效.

~/.profile  是交互式、login 方式进入 bash 运行的
~/.bashrc   是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。

/etc/environment是设置整个系统的环境,/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。
系统应用程序的执行与用户环境可以是无关的,但与系统环境是相关的,所以当你登录时,你看到的提示信息,象日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,如果系统环境LANG=zh_CN,则提示信息是中文的,否则是英文的.

配置一个路径到profile和enviroment中后, 新开一个终端是不能使用默认命令的.
比如在profile和enviroment中设置了export PATH=xxx:$PATH后, 新开的终端中如果不source一下 是不能使用该命令的,
如果你在.bashrc中设置了的话 新开的终端是可以直接使用的.

如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准.

比方说,你想字在每次登录时打印一些关于你机器的很长的诊断信息,比如平均负载,内存使用情况,当前用户,等等。你只希望在登录的时候看到它们,所以你只需要把这些放在.profile中。如果你放在.bashrc中,你会在每次打开一个新的终端窗口时看见这些信息。
Mac OS X的终端窗口是个例外。每个终端窗口在打开的时候都会执行登录shell即.bash_profile代替了.bashrc。

bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-login shell,而profile用于交互式login shell
什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

1. 图形模式登录时,顺序读取:/etc/profile和~/.profile
2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc
3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile
4. 从其它用户su到该用户,则分两种情况:
    (1)如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~ /.bash_profile。
    (2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc
5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout
6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。
7. 上面的例子凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~ /.profile(ubuntu默认只有这个文件)。

Bourne Again shell (bash), 正如它的名字所暗示的,是 Bourne shell 的扩展.

  评论这张
 
阅读(45)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018