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脚本程序。

关键词: linux

上一篇: 服务器防止WEB SHELL的后门方法
下一篇: 几个常见端口的关闭

相关文章
目前还没有人评论,您发表点看法?
发表评论

评论内容 (必填):