Chinaunix首页 | 论坛 | 博客
  • 博客访问: 408010
  • 博文数量: 403
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -70
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-05 12:45
文章分类

全部博文(403)

文章存档

2014年(3)

2013年(1)

2012年(3)

2011年(21)

2010年(13)

2009年(64)

2008年(9)

2007年(36)

2006年(253)

分类:

2009-09-01 10:36:43

内容提要:

用户登录操作系统时,shell先读取您设置的初始化文件,然后定义您的用户环境。用户环境的各项特征由给定的环境变量的值来定义,并保持该环境直到注销系统。
在登录操作系统时,shell使用两种类型的启动配置文件。首先它对配置文件中的命令求值,然后执行命令以设置系统环境。这些文件都具有相似的功能(但是/etc/profile 文件对系统上所有用户都生效,而 .profile 文件只对定制该用户自己的环境生效)。
shell首先根据 /etc/environment文件来设置系统环境,并对包含在 /etc/profile文件中的命令求值并对相应的变量进行赋值。运行这两个文件后,系统将查看在该登录用户的主目录中是否存在 .profile文件。如果 .profile文件存在,则系统运行该文件对用户环境进行进一步配置。另外,.profile文件还将指定是否还有环境文件存在,如果环境文件存在(通常名为 .env),则系统运行此文件,并设置环境变量。
/etc/environment、/etc/profile 和 .profile文件在登录时运行一次。另一方面,.env文件在每次您打开新 shell或窗口时运行。

本文将讨论以下初始化文件:

/etc/environment 文件
/etc/profile 文件
.profile 文件
.env 文件


说明:


/etc/environment 文件

操作系统在登录时使用的第一个文件是 /etc/environment文件,/etc/environment文件中包含指定所有进程的基本环境的变量。当新进程开始时,exec 子例程产生一个可用的字符串数组,其格式为 Name=Value,此字符串数组称为环境。每一个字符串所定义的名字称为一个环境变量或 shell变量。exec子例程允许一次设置整个环境。
登录时,系统在读取名为 .profile的登录概要文件前,从 /etc/environment文件设置环境变量。以下变量组成基本环境:

HOME 用户登录的全路径名或 HOME 目录。login 程序设置它为 /etc/passwd 文件中指定的名称。
LANG 当前有效的语言环境名称。LANG 变量最初在安装时在 /etc/profile 文件中设置。
NLSPATH 消息编目的全路径名。
LOCPATH “本地语言支持表”的位置的全路径名。
PATH 系统命令,如 sh、time、nice 和 nohup 在查找其路径名不完整的命令时搜索的目录顺序。
TZ 时区信息,TZ 环境变量最初由系统登录概要文件 /etc/profile 文件设置。


/etc/profile 文件

操作系统在登录时使用的第二个文件是 /etc/profile文件。此文件控制系统范围的缺省变量,如:

导出变量
文件创建掩码(umask)
终端类型
新邮件到达时作为指示的邮件消息

/etc/profile 文件对系统所有用户都生效,只有系统管理员能配置更改此文件。
下例是一个典型的 /etc/profile 文件:

#Set file creation mask
unmask 022
#Tell me when new mail arrives
MAIL=/usr/mail/$LOGNAME
#Add my /bin directory to the shell search sequence
PATH=/usr/bin:/usr/sbin:/etc::
#Set terminal type
TERM=lft
#Make some environment variables global
export MAIL PATH TERM


.profile 文件

操作系统在登录时使用的第三个文件是 .profile 文件, .profile 文件在用户的主目录($HOME)中,并使用户能够定制个人工作环境。因为 .profile 文件是隐藏的,所以请使用 ls -a 命令列出它。
在 login 程序将 LOGNAME(登录名)和 HOME(登录目录)变量添加到环境以后,将执行 $HOME/.profile文件中的命令(如果该文件存在)。.profile 文件包含用户的个人概要文件,它会覆盖 /etc/profile 文件中的变量集赋值。.profile 文件通常用于设置导出的环境变量和终端方式,通过修改 .profile 文件可定制用户的个人工作环境。一般使用 .profile 文件控制以下缺省值:

打开的 shell
提示符外观
键盘声音

下例是一个典型的 .profile 文件:

PATH=/usr/bin:/etc:/home/bin1:/usr/lpp/tps4.0/user::
epath=/home/gsc/e3:
export PATH epath
csh

此示例定义了两个路径变量(PATH 和 epath),导出它们,并打开一个 C shell(csh)。
还可以使用 .profile 文件(或者,如果它不存在,使用 /etc/profile 文件)来确定登录 shell变量。当然您也可以定制其它 shell环境,例如,使用 .cshrc 文件和 .kshrc 文件来分别定制 C shell 和 Korn shell(在该 shell启动时)。


.env 文件

操作系统在登录时使用的第四个文件是 .env 文件,前提是 .profile 包含以下行:export ENV=$HOME/.env。
.env 文件使您能够定制个人工作环境变量。同样的, .env 文件也是隐藏的,所以要使用 ls -a 命令来列出它。.env 文件包含覆盖/etc/environment文件中变量集的个人用户环境变量。用户可以通过修改 .env 文件来按需定制环境变量。

下例是一个典型的 .env 文件:

export myid= ` id | sed -n -e 's/).*$//' -e 's/^.*(//p' `
#set prompt: login & system name & path
if [ $myid = root ]
then typeset -x PSCH='#:\${PWD}> '
PS1="#:\${PWD}> "
else typeset -x PSCH='>'
PS1="$LOGNAME@$UNAME:\${PWD}> "
PS2=">"
PS3="#?"
fi
export PS1 PS2 PS3
#setup my command aliases
alias ls="/bin/ls -CF" \
d="/bin/ls -Fal | pg" \
rm="/bin/rm -i" \
up="cd .."

注:修改 .env 文件时,请确保新创建的环境变量不会与标准变量(如 MAIL PS1 PS2 IFS )发生冲突。

参考资料:

1. AIX 5L File Reference, 文件 /etc/environment;
2. AIX 5L File Reference, 文件 /etc/profile。
阅读(1463) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~