内容提要:
本文档简单介绍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 执行的后续程序有所不同,参见下表:
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脚本程序。
本文档简单介绍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
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脚本程序。