Chinaunix首页 | 论坛 | 博客
  • 博客访问: 147325
  • 博文数量: 31
  • 博客积分: 2075
  • 博客等级: 大尉
  • 技术积分: 340
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-29 10:06
文章分类

全部博文(31)

文章存档

2017年(3)

2014年(1)

2013年(1)

2011年(9)

2010年(14)

2009年(3)

我的朋友

分类: LINUX

2011-06-08 17:06:07

/etc/profile 影响的是 K、B、BASH
/etc/.login 影响的是C
/etc/skel/下面应该是文件模板,用户第一次登陆时将相应的模板copy到自己的目录下,并直接受其影响
-----------------------------------------------------------------------------------
一、SHELL 的START FILES 

不管你的login shell是那一种shell,每一个shell都有它自己的start files,我们设定理想环境时所需使用的指令与设定的变量,都可以写在这些start files中,在login时先後加以执行,这些start files的名称分别是: 

SHELL     START FILES 

sh           /etc/profile
               $HOME/.profile  
~/.dtprofile是在用户的主目录下面的,在这里设置你进入CDE时的一些变量设置,
如果用户没有通过CDE进入过系统,那么将不会产生这个文件,只有用户曾经用CDE进入过系统后就会自动生成一个.dtprofile文件,然后还可以对里边的变量进行设置。
如果在这个文件里的DTSOURCEPROFILE的变量设置为true,则会读取用户主目录下的.profile文件里的变量设置,如果没有这个变量或者设置为false,那么将不读取.profile里的环境变量。
bsh进CDE时的读取顺序: /etc/profile ; #HOME/.dtprofile ; 如果.dtprofile文件中的DTSOURCEPROFILE = true,那么当你在cde中开一个term时,会读取$HOME/.profile ,否则就不读,所以如果你是在CDE中,你可以在.dtprofile中改变量值.
useradd  -m -d home directory  username....中的-m参数会copy/etc/skel/下的local.cshrc local.profile local.login下三个文件.同时生成.profile
bash         /etc/profile 
               $HOME/.bash_profile(or $HOME/.bashrc) 
csh          None 
               $HOME/.cshrc & $HOME/.login 
tcsh         None 
               $HOME/.cshrc(or $HOME/.tcshrc) & $HOME/.login 

**********************************************************************************
『LINUX 下的Bourne Again Shell』

/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。
/etc/profile :当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,『当用户登录时,该文件仅仅执行一次!』默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,『当登录时以及每次打开新的shell时,该文件被读取』.
  另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 

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

执行顺序:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

***********************************************************************************
如果这些文件都存在,那麽它们的执行顺序将是: 
1. sh系列 /etc/profile -->; $HOME/.profile 
2. csh系列 $HOME/.cshrc -->; $HOME/.login 

在这些start files中,/etc下的profile是系统管理者为大家设定的,一般用户无法做任何更动,如果对系统管理者的设定觉得不够或
不符需要,则可在个人帐号下的.profile、.cshrc、.login增加或修正,尤其是对csh及tcsh的用户而言,因为在/etc下并没有
start files,所以也不会有系统管理者设定好的环境可以使用,用户就必须自行设定所需要的所有的变量与指令,否则常会有寸步难行的感觉

如果希望提示符号能随着路径更改而改变 ,在sh及csh中无法做到这个功能,而在bash及tcsh中的设定则分别是: 

bash:
在$HOME/.profile中加上 
PS1='`PWD`>; ' 
或 PS1="w>;" 

tcsh:
在$HOME/.cshrc中加上 
set prompt='%~>;'

二、常用变量设定

在UNIX环境中的变量可分为两类,一是环境变量(Enviroment Variable)、一是shell变量(Shell Variable),二者之间的不同处在于:
环境变量不会因为shell间的更替而失去这个变量的作用,如PATH是一个环境变量,因此,即使您在设定好PATH之後再执行另一个shell
(如原来是用sh、而後在sh环境中再执行csh),PATH这个环境变量仍能继续作用,而shell变量(如csh的cwd)则是只有在特定的shell下
才有作用,一执行其他shell就失去作用。 

sh及csh这2个系列各有其不同的设定变量的方式,为: 

1. Bourne Shell系列 
[VAR]=[STRING or NUMBER] 
export [VAR] 
如果当我们离开shell、进入另一个程式(如tin)之後,仍需要使用这个变量,还需要'export'

2. C Shell系列 
set [var] = [STRING or NUMBER] 
setenv [var] [STRING or NUMBER] 
其中'set'是单纯设定变量值,'setenv'则除了设定变量值外,还包含了类似sh中'export'的功能。 


Bourne Shell或C Shell,它们都有一些基本的、共同的常用变量,如: 
『PATH』
设定可执行文件的寻找路径,若现行目录也要包含在寻找的路径中,则需在设定路径时给予一'.',表示现行目录亦包含在寻找的路径中,如: 
PATH=.:/bin:/usr/local/bin:/usr/ucb 
或 
set path=(. /bin /usr/local/bin /usr/ucb) 

『EDITOR』
设定想要使用的编辑器,如 
EDITOR=/usr/ucb/vi 
或 
setenv EDITOR /usr/ucb/vi 

『HOME 』
设定个人帐号home directory的所在位置,通常在login时即叁考/etc/passwd而给予一设定值,因此除非用户有某些特殊需求,通常不会重新设定。 

『SHELL 』
同样是在login时即会叁考/etc/passwd的内容而自动设定,用户即使重新设定这个变量的内容,对帐号的使用也不会有任何影响。 

『提示符号的设定』
在sh 中: 
PS1="[STRING]" 
PS2="[STRING]" 

在csh中: 
set prompt="[STRING]" 

三、SHELL 环境的变化
要在线直接改变所使用的shell(如直接执行'csh'或'exec csh',此时不会执行start files)或是要改变设定的内容,在编辑了start files或script files之後,可利用下列指令将环境更新,
而不必重新login: 

. [script file] (在sh 系列的shell中) 
source [script files] (在csh系列的shell中) 

直接执行一个script file与用'.'、'source'指令执行各有其不同的效果,可建立一内容为 cd / (或cd [DIR]) 的script file来观察它们之间的差异:

A、script file的执行环境是一内定或自定的subshell(可在script file的第一行用类似'#!/bin/csh'指令加以设定),所以它的直接执行并无法真正将shell环境的工作目录切换到/,
而script file一结束,subshell即不存在、

B、但是用'.'或'source'执行则是真正将shell的工作环境下的工作目录更换到/目录,不会因为script file的结束而使文件中指令的效果消失。
阅读(1371) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~