Shell 启动文件概述
内容提要: 本文档简单介绍Shell 启动文件,适用于AIX 4 及更高版本。主要内容有: 登录(login)时的执行顺序 启动文件举例 基本操作系统提供的其他Shell
说明: 1. 登录(login)时的执行顺序 登录的时候,shell 首先读shell启动文件定义用户环境。用户环境通过环境变量的值进行描述。这个环境一直维持到用户注销(logoff)。 无论运行什么shell,文
件/etc/environment 和 /etc/security/environ 都先运行。即使用rexedc和rshd开始的shell, 也应该设置定义在/etc/environment 文件中的环境变量。 /etc/environment 设置诸如最小搜索路径,时区,语言等用户环境。 这个文件不是一个shell script 并且只接受以下数据格式: Name=<Value> (环境变量名=变量值) init开始的所有进程都要执行这个文件,它影响所有的登录shells。 /etc/security/environ 是一个ASCII 码文件,它包含用户的环境属性节(stanzas),每一个节有用户名标识,并且以如下形式的定义: Attribute=<Value> (属性=值) 每个用户节有如下属性: usrenv 定义在登录时被设置的环境变量(其间用逗号分隔)。 sysenv 定义在登录时,保护状态用到的环境变量( user protected state environment )。这些变量不可以从非授权程序进行存取。 除了这两个文件,不同的shell 执行的后续程序有所不同,参见下表:
| Korn shell |
C Shell |
Bourne Shell |
/etc/environment /etc/security/environ /etc/profile
$HOME/.profile $HOME/.kshrc |
/etc/environment /etc/security/environ /etc/csh.cshrc /etc/csh.login
$HOME/.cshrc $HOME/.login |
/etc/environment /etc/security/environ /etc/profile
$HOME/.profile |
注意: $HOME/.login 和/etc/csh.login (csh),$HOME/.profile 和 /etc/profile (ksh and bsh) 仅在登录时执行。/etc/.cshrc和$HOME/.cshrc (csh) ,$HOME/.kshrc (ksh) 在子shell 调用的时候执行。它们一般被用于定义别名和shell 变量(例如noclobber, ignoreeof 等),建议只在这些程序中使用内建(built-in)命令,因为非内建命令可能提高启动时间。 2.启动文件举例 Shell 启动文件定义搜索路径,设置shell 提示符,历史文件(csh和ksh)以及终端类型。参见以下例子: 注意:括弧中的内容,是对源文件的翻译解释,不是源文件的一部分。 #!/bin/csh ###################### #SAMPLE .login file # ###################### #define search path (定义搜索路径) set path=(/bin /usr/bin $HOME/bin /etc .) #set prompt to reflect the current working directory (设置提示符) alias cd 'chdir \!* > /dev/null; set prompt="$cwd %"' #set up history file (建立历史文件) set history=20 #set up terminal type (设置终端类型) eval `tset -s -Q -m ':?ibm3151'` #-s flag prompts the C shell setenv process. #The above line prompts users to set #the TERM environment variable, #hitting enter will set TERM to ibm3151 #!/bin/ksh ####################### #SAMPLE .profile file # ####################### #define search path PATH=/bin:/usr/bin:$HOME/bin:/etc:. #set prompt to refect the current working directory PS1='$PWD $' # To include variables LOGNAME and HOSTNAME to the PS1 # variable - set PS1 as follows # PS1='${LOGNAME} @${HOSTNAME} ${PWD} $' #set up history file HISTFILE=$HOME/.my_history #default is $HOME/.sh_history HISTSIZE=20 #set up terminal type TERM=`termdef` export PATH, PS1, TERM 注意:设置bsh 提示符包含当前路径可能稍微复杂一些,因为Bourne shell 不包含PWD 变量,但是可以使用pwd 命令,例如,将下面一行放入.profile文件。 xcd () { cd $*; PS1="`pwd` $"; } 3.基本操作系统提供的其他Shell 缺省 shell (sh) * /usr/bin/sh (or /bin/sh),在AIX 版本4,被连接到ksh。 受限shell(Restricted shell -- Rsh) Rsh不允许下述功能,其余和bsh 相同: * 改变路径 * 设置 PATH 或SHELL * 命令名中包含"/" * 重定向输出 可信shell(Trusted shell – tsh) tsh 除以下方面外和ksh相同 * 不支持函数(function)和别名定义功能 * IFS 和PATH环境变量不能被重定义 * 只有被信任的程序(trusted programs)可以在tsh运行 * 不支持命令历史 * 只有/etc/tsh profile 文件被使用 受限Korn shell(Restricted Korn shell -- ksh -r and rksh) * 不能改变路径 * 不能改变 SHELL, ENV, 或 PATH 环境变量的值 * 不能使用显式的路径名指定执行程序的位置 * 不能使用重定向符重定向输出 >, >|, <>, >> 但是,如果用户调用Korn Shell 脚本程序,程序可以正常运行,换言之,受限Korn shell并不限制Korn shell脚本程序。
|
|