.kshrc File

Purpose

Contains a shell script that customizes the Korn shell environment.

Description

The $HOME/.kshrc file is a shell script that customizes the Korn-shell environment. This .kshrc script often contains a list of environment variables, command aliases, and function definitions that customize the Korn-shell environment.

Each time you start a new instance of the Korn shell, the ksh command examines the value of the ENV environment variable set in the $HOME/.profile file. If the ENV environment variable contains the name of an existing, readable file, the ksh command runs this file as a script. By convention, this file is named $HOME/.kshrc. You can use another name, but you must set the ENV environment variable to point to it.

The $HOME/.kshrc file runs every time an interactive shell or a shell program is started. For all the standard output (stdout), commands in the $HOME/.kshrc files must not assume a tty subsystem environment that allows you to perform the following operation at a kernel level: process management, line editing, and session management. Ensure that the shell is interactive before you write to the stdout. Unexpected characters in the stdout can cause failure of programs that are called from the Korn-shell.

Examples

The following is a sample of a .kshrc script on one specific system. The contents of your .kshrc file can be significantly different.

# @(#).kshrc 1.0
# Base Korn Shell environment
# Approach:
#      shell            initializations go in ~/.kshrc
#      user             initializations go in ~/.profile
#      host / all_user  initializations go in /etc/profile
#      hard / software  initializations go in /etc/environment

# DEBUG=y       # uncomment to report
[ "$DEBUG" ] && echo "Entering .kshrc"

set -o allexport

# options for all shells --------------------------------
# LIBPATH must be here because ksh is setuid, and LIBPATH is
# cleared when setuid programs are started, due to security hole.

LIBPATH=.:/local/lib:/lib:/usr/lib

# options for interactive shells follow-------------------------

TTY=$(tty|cut -f3-4 -d/)
HISTFILE=$HOME/.sh_hist$(echo ${TTY} | tr -d '/')
PWD=$(pwd)
PS1='
${LOGNAME}@${HOSTNAME} on ${TTY}
[${PWD}] '

# aliases

[ "$DEBUG" ] && echo "Setting aliases"
alias man="/afs/austin/local/bin/man -e less"
alias pg="pg -n -p':Page %d: '"
alias more="pg -n -p':Page %d: '"
alias cls="tput clear"
alias sane="stty sane"
alias rsz='eval $(resize)'

# mail check

if [[ $- = *i* ]]; then
if [ -s "$MAIL" ]       # This is at Shell startup. In
then echo "$MAILMSG"    # normal operation, the Shell checks
fi                      # periodically.
fi

# aixterm window title

if [[ $- = *i* ]]; then
[[ "$TERM" = "aixterm" ]] && echo "\033]0;$USER@${HOSTNAME%t1}\007"
fi

# functions

[ "$DEBUG" ] && echo "Setting functions"

function pid { ps -e | grep $@ | cut -d" " -f1; }

function df {
  /bin/df $* | grep -v afs;
  echo "\nAFS:";
  /usr/afs/bin/fs listquota /afs;
}

function term {
  if [ $# -eq 1 ]
  then
    echo $TERM
    TERM=$1
    export TERM
  fi
  echo $TERM
}

function back {
  cd $OLDPWD
  echo $CWD $OLDPWD
}

[ "$DEBUG" ] && echo "Exiting .kshrc"

set +o allexport

Files

Item Description
/etc/environment Contains system-wide environment variable definitions.
/etc/profile Contains system-wide environment customization.
$HOME/.kshrc Sets the user environment for each start of the Korn shell.
$HOME/.profile Contains user-specific logon initialization.