Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3335109
  • 博文数量: 815
  • 博客积分: 12898
  • 博客等级: 上将
  • 技术积分: 7883
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-25 09:57
文章分类

全部博文(815)

文章存档

2014年(1)

2011年(46)

2010年(192)

2009年(121)

2008年(70)

2007年(385)

分类:

2007-05-28 17:21:21

The Korn shell (see ) uses two startup files that allow users to customize their shell environment: a $HOME/.profile (if one exists) and the startup file specified by the ENV environment variable (if set and exported). Typically, $HOME/.kshrc is the file name used as the value of the ENV variable, however the startup file for ksh can be named any valid file name and is not constrained to be .kshrc. .kshrc is not a startup file hardcoded into ksh, but rather a common name that is used for the ksh startup file specified (optionally) by the ENV environment variable in the users environment.

The .profile is read once, by your login ksh. The ENV file is read by each invocation of ksh, if ENV is defined in the current environment. Typically, users define ENV in their .profile file, and then this variable is available to all future child shells (unless ENV is unset).

The ENV file is often used for function and alias definitions, and setting ksh options.

A typical Korn shell .profile might look something like this:

1  :
2 # @(#) profile 23.1 91/04/03
3 #
4 # .profile -- Commands executed by a login Korn shell
5 #
6 # Copyright (c) 1990-1998 The Santa Cruz Operation, Inc.
7 # All rights reserved.
8 #
9 # This Module contains Proprietary Information of the Santa Cruz
10 # Operation, Inc., and should be treated as Confidential.
11 #
12 PATH=$PATH:$HOME/bin:. # set command search path
13 export PATH
14 if [ -z "$LOGNAME" ]; then
15 LOGNAME=`logname` # name of user who logged in
16 export LOGNAME
17 fi


18 MAIL=/usr/spool/mail/$LOGNAME # mailbox location
19 export MAIL
20 if [ -z "$PWD" ]; then
21 PWD=$HOME # assumes initial cwd is HOME
22 export PWD
23 fi
24 if [ -f $HOME/.kshrc -a -r $HOME/.kshrc ]; then
25 ENV=$HOME/.kshrc # set ENV if there is an rc file
26 export ENV
27 fi
28 # use default system file creation mask (umask)
29 eval `tset -m ansi:ansi -m $TERM:?${TERM:-ansi} -r -s -Q`
30 # If job control is enabled, set the suspend character to ^Z (control-z):
31 case $- in
32 *m*) stty susp '^z'
33 ;;
34 esac
35 set -o ignoreeof # don't let control-d logout
36 case $LOGNAME in # include command number in prompt
37 root) PS1="!# " ;;
38 *) PS1="!$ " ;;
39 esac
40 export PS1

line 1
Contains a single colon that says ``this is a Bourne shell script.'' Even though this is a startup script for the Korn shell, the authors have chosen to use the more common syntax of the Bourne shell programming language. This single colon command is more portable than the (preferred) newer hash-bang syntax. It is equivalent in function to the line:
#! /bin/sh
lines 2-11
Contain comments.
line 12
Sets the path definition in exactly the same way as the preceding Bourne shell .profile: ``set the path equal to the current path, the bin in the home directory, and the current directory.''
line 13
Exports the path to any subshells. This way, you do not have to include a path definition in your .kshrc.
lines 14-17
Set up a variable called LOGNAME, which is used in the following MAIL setting (line 18). Literally, these lines say ``if checking for the value of LOGNAME returns a zero-length string (that is, if LOGNAME is not set), then set LOGNAME to the output of the logname command. Then, export the LOGNAME variable to all subshells.''
line 18
Tells the shell where to look for mail, using the variable LOGNAME.
line 19
Exports the mail location to all subshells.
lines 20-23
Check to see if a variable is already set, and if it is not, set the variable. These lines are similar to lines 14-17. In this case, PWD is being set to the home directory.
lines 24-27
Check for a .kshrc file in the home directory, and set the ksh variable ENV to this file if it exists. ksh looks in the file pointed to by the ENV variable to set up the environment for every new ksh; you need to tell it explicitly to look in ~/.kshrc for ENV definitions. Literally, these lines say ``if a file called .kshrc exists in the home directory and the file is readable, then set ENV to point to this file, and export ENV.''
line 28
Contains a comment. Just as in the preceding Bourne shell .profile, umask is not set here. The authors have chosen to use the default system umask rather than resetting it on a per-user basis.
line 29
Sets up the terminal type using , as explained in the preceding Bourne shell .profile.
lines 30-34
Test to see if job control is enabled, and if it is, set the suspend character to Z. Job control is a Korn shell feature that lets you move jobs you are processing from the foreground to the background and vice versa. You use the suspend character to suspend a job temporarily that is running in the background.
line 35
Tells the shell to ignore single end-of-file (EOF) characters. This is what you set to stop D from logging you out.
lines 36-40
Set up the prompt based on the value of LOGNAME. For normal users, the prompt is the current command number followed by a ``$''; for root (the superuser), the prompt is the current command number followed by a ``#''.

A typical .kshrc might look like this:

1  :
2 #
3 # .kshrc -- Commands executed by each Korn shell at startup
4 #
5 # @(#) kshrc 1.1 90/03/13
6 #
7 # Copyright (c) 1990-1998 The Santa Cruz Operation, Inc.
8 # All rights reserved.
9 #
10 # This Module contains Proprietary Information of the Santa Cruz
11 # Operation, Inc., and should be treated as Confidential.
12 #
13 # If there is no VISUAL or EDITOR to deduce the desired edit
14 # mode from, assume vi(C)-style command line editing.
15 if [ -z "$VISUAL" -a -z "$EDITOR" ]; then
16 set -o vi
17 fi

line 1
Tells the shell that this is a Bourne shell script by starting the script with a single colon, as you have seen before.
lines 2-14
Contain comments. These make up the bulk of this brief .kshrc.
lines 15-17
Set up as the default editor ksh uses when you want to edit a command line. Literally, these lines say ``If the VISUAL variable is not set, and the EDITOR variable is not set, then turn on (set -o) the vi option.''
阅读(1690) | 评论(0) | 转发(0) |
0

上一篇:history

下一篇:test

给主人留下些什么吧!~~