博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

飞翔蜘蛛

我们崇尚一生的事业,更赞叹自由奔放的灵魂。
lipengfei.cublog.cn


Shell 启动文件概述

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

    发表于: 2008-05-10 ,修改于: 2008-05-10 23:28,已浏览190次,有评论0条 推荐 投诉


    网友评论

    发表评论