/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的结束而使文件中指令的效果消失。