export TERM=dtterm???? #对应一个dtterm终端模拟窗口
你也可以使用ttytype命令来设置你的终端变量。这个命令通常可以自动识别你的终端类型。以下的代码可以加入到你的登录时运行的脚本中,为你设置你的终端类型:
if [ \
????\????\????\??then
??????eval 'ttytype -s -a ' ??fi
??export TERM PS1
PS1变量定义你的shell提示符。这个提示符也可以由用户自己来修改。一些有用的PS1的值如下所示:
export PS1='S' ???????????#使用一个简单的\提示符 export PS1='$PWD $'?????????#在提示符内包括用户的pwd export PS1='$PWD ($LOGNAME) $'??? #同时包括用户的用户名 LPDEST
LPDEST定义了用户默认打印机。在LPDEST中设置的打印机会优先于系统管理员设置的系统范围内的默认打印机。例子 : export LPDEST=laser export LPDEST=printera
PATH
用户每次输入一个命令,shell就必须去查找这个命令的可执行文件的位置。PATH变量中包含有一个以“:”分割的路径的列表,shell在这些列表中查找可执行文件。如果用户需要使用一个新的应用和工具,你也许会需要修改你的PATH变量。你可以使用以下类似的语法来在用户的PATH中增加新的目录: PATH=$PATH:/usr/local/bin ????# 在已存在的PATH中增加/usr/local/bin这一个路径
初始化的PATH变量通常取自/etc/PATH文件。通常安装一个应用会自动更新/etc/PATH文件,所以不用单独地设置用户的PATH。 EDITOR
如果你的用户想要使用命令行编辑,需要定义三个变量: export EDITOR=vi
export HISTFILE=~/.sh_history export HISTSIZE=50
EDITOR定义用户选择的命令行编辑器。emacs和vi是唯一允许的两个值。
HISTFILE代表记录用户输入的命令的文件名。HISTSIZE决定保存在shell的命令缓冲区内的命令的数量。
这些仅仅是你能为你的用户定义的普通的环境变量的一部分。其它的环境变量的定义可以在POSIX shell的帮助中查找,你的用户也可能需要用到其它的变量。 环境变量可以在命令行中定义,但是更通常的做法是在登录配置文件中定义,这会在以下的章节中介绍。
用户登录的时候发生了什么?
虽然定制一个用户的登录环境的环境变量可以在命令行中定义,但是通常是在登录过程中执行的脚本中定义,典型的,有三个脚本被用于在用户登录时初始化环境。
第一个脚本是由系统管理员维护的一个脚本文件,用来为所有的用户定制通用的环境变量。
第二个脚本是每个用户自己维护的本地脚本文件,本地登录脚本能覆盖和修改系统默认的脚本。
另一个可选的脚本:附加的本地登录脚本能够定义附加的环境变量或者设置附加的shell特征。在POSIX shell中,附加的脚本通常用来定义shell别名。 登录脚本的名字在各种shell中都是不同的。以下是POSIX,Korn,和C shells的登录脚本的详细讨论: Shell环境初始化的顺序
1. shell运行正确的系统登录脚本,这个脚本初始化用户的环境。系统登录脚本定义一个默认的环境,这个脚本可以由系统管理员定制。
如果shell是..... Bourne(/usr/old/bin/sh) korn(/usr/bin/ksh) POSIX(/usr/bin/sh) 限制的shell(/usr/bin/rshr,/usr/bin/rksh C (/usr/bin/csh) 系统登录脚本是.... /etc/profile /etc/profile /etc/profile /etc/profile /etc/csh.login 这些脚本定义和输出的环境变量有PATH,TZ,TERM,其来源于
/etc/PATH,/etc/MANPATH,/etc/TIMEZONE,/etc/SHLIB_PATH这些文件。由于这个系统登录脚本在所有用户登录的时候都会运行,系统管理员可以通过修改这个文件来为所有用户设置默认环境变量。
这种特性还可以让每一个用户在登录系统时执行一些基本的命令。 2. 显示/etc/copyright 和/etc/motd文件中的内容。 3. 提示用户没有阅读的新闻: ??news:news_filename
4. shell运行在用户的home目录下的用户的本地登录脚本(如果存在)。
如果shell为..... Bourne(/usr/old/bin/sh Korn(/usr/bin/ksh) POSIX(/usr/bin/sh 限制的shell(/usr/bin/rsh,/usr/bin/rksh 本地登录脚本为.... .profile .profile .profile .profile C (/usr/bin/csh) .login 注意:在典型情况下,系统管理员在最初创建用户帐号时,会为每个用户创建一个本地的登录脚本。如果使用useradd命令来添加一个用户,它会拷贝默认本地登录脚本文件(/etc/skel/.profile)到这个用户的home目录下。用户可以自己继续修改这个文件来定制他们的环境变量,以满足自己的需要。
在这个脚本之外,POSIX,Korn,和C shells可能(通常都会)有另外的本地登录脚本:
-POSIX和korn shell-: 如果定义了ENV变量,shell会运行在ENV中定义的文件(典型的,.shrc在开启一个新的shell的时候执行,许多程序(例如,vi,和mailx)运行用户在程序执行中开启一个shell;这被称为一个shell escape,一个shell escape会要求重新执行一次ENV文件,而.profile只会在登录的时候执行。ENV文件(.kshrc或者.shrc)会在登录时,.profile文件执行后执行。
- C shell:在一个新的C shell启动的时候运行.cshrc文件。这和Korn shell ENV文件的工作方式类似。.login 文件只在登录的时候运行,每一次开启一个新的C shell的时候会重新运行.chsrc文件。
一旦所有的初始化工作都完成后,shell会出现一个提示符等待用户的输入。
/etc/skel目录
当使用useradd命令创建一个新用户帐号的时候,系统会拷贝一些默认的配置文件到新用户的home目录下。/etc/skel目录下的默认的配置文件包括: /etc/skel/.profile?????#ksh/posix本地登录脚本 /etc/skel/.login??????#csh 本地登录脚本 /etc/skel/.cshrc????? #csh 附加登录脚本 /etc/skel/.exrc??????#vi 启动配置文件
如果你想要修改自动拷贝到新用户home目录中的默认配置文件,你可以修改/etc/skel中的文件。对/etc/skel目录下的文件的修改不会影响已经存在地用户的home目录下的文件。
如果你的应用要求在新用户的home目录下自动创建一些配置文件,你同样也可以通过在/etc/skel目录下添加文件来实现。
文件系统层次结构
目标
完成这一章,你能作以下事情:
? ? ? ?
描述为什么要区分动态文件系统和静态文件系统
描述/sbin,/usr,/stand,/etc,/dev,/var(操作系统相关目录)的主要内容 描述/opt,/etc/opt,和/var/opt(应用程序相关)的主要内容 使用find,和whereis命令在文件系统中查找文件
介绍文件系统范例
许多系统管理任务都要求系统管理员知道系统和应用程序的配置文件和日志文件的位置,并能对这些文件进行操作。所以了解文件系统组织结构,可以让你能找到这些文件并进行系统管理的工作。 下面介绍标准的AT&T SVR4文件系统布局。
文件系统中的文件可以通过不同的方法分类。例如可以分为静态文件和动态文件,可执行文件和配置文件。这些分类原则组成了文件系统的逻辑结构,并且能够简化系统管理的任务。
文件系统可以分为静态和动态两个部分