1: 2# $OpenBSD: ksh.kshrc,v 1.26 2016/09/10 12:50:20 rpe Exp $ 3# 4# NAME: 5# ksh.kshrc - global initialization for ksh 6# 7# DESCRIPTION: 8# Each invocation of /bin/ksh processes the file pointed 9# to by $ENV (usually $HOME/.kshrc). 10# This file is intended as a global .kshrc file for the 11# Korn shell. A user's $HOME/.kshrc file simply requires 12# the line: 13# . /etc/ksh.kshrc 14# at or near the start to pick up the defaults in this 15# file which can then be overridden as desired. 16# 17# SEE ALSO: 18# $HOME/.kshrc 19# 20 21# RCSid: 22# $From: ksh.kshrc,v 1.4 1992/12/05 13:14:48 sjg Exp $ 23# 24# @(#)Copyright (c) 1991 Simon J. Gerraty 25# 26# This file is provided in the hope that it will 27# be of use. There is absolutely NO WARRANTY. 28# Permission to copy, redistribute or otherwise 29# use this file is hereby granted provided that 30# the above copyright notice and this notice are 31# left intact. 32 33case "$-" in 34*i*) # we are interactive 35 # we may have su'ed so reset these 36 USER=$(id -un) 37 UID=$(id -u) 38 case $UID in 39 0) PS1S='# ';; 40 esac 41 PS1S=${PS1S:-'$ '} 42 HOSTNAME=${HOSTNAME:-`uname -n`} 43 HOST=${HOSTNAME%%.*} 44 45 PROMPT="$USER:!$PS1S" 46 #PROMPT="<$USER@$HOST:!>$PS1S" 47 PPROMPT='$USER:$PWD:!'"$PS1S" 48 #PPROMPT='<$USER@$HOST:$PWD:!>'"$PS1S" 49 PS1=$PPROMPT 50 # $TTY is the tty we logged in on, 51 # $tty is that which we are in now (might by pty) 52 tty=`tty` 53 tty=`basename $tty` 54 TTY=${TTY:-$tty} 55 # $console is the system console device 56 console=$(sysctl kern.consdev) 57 console=${console#*=} 58 59 set -o emacs 60 61 alias ls='ls -CF' 62 alias h='fc -l | more' 63 64 case "$TERM" in 65 sun*-s) 66 # sun console with status line 67 if [[ $tty != $console ]]; then 68 # ilabel 69 ILS='\033]L'; ILE='\033\\' 70 # window title bar 71 WLS='\033]l'; WLE='\033\\' 72 fi 73 ;; 74 xterm*) 75 ILS='\033]1;'; ILE='\007' 76 WLS='\033]2;'; WLE='\007' 77 parent="`ps -ax 2>/dev/null | grep $PPID | grep -v grep`" 78 case "$parent" in 79 *telnet*) 80 export TERM=xterms;; 81 esac 82 ;; 83 *) ;; 84 esac 85 # do we want window decorations? 86 if [[ -n $ILS ]]; then 87 function ilabel { print -n "${ILS}$*${ILE}">/dev/tty; } 88 function label { print -n "${WLS}$*${WLE}">/dev/tty; } 89 90 alias stripe='label "$USER@$HOST ($tty) - $PWD"' 91 alias istripe='ilabel "$USER@$HOST ($tty)"' 92 93 # Run stuff through this to preserve the exit code 94 function _ignore { local rc=$?; "$@"; return $rc; } 95 96 function wftp { ilabel "ftp $*"; "ftp" "$@"; _ignore eval istripe; } 97 98 function wcd { \cd "$@"; _ignore eval stripe; } 99 100 function wssh { \ssh "$@"; _ignore eval 'istripe; stripe'; } 101 function wtelnet { \telnet "$@"; _ignore eval 'istripe; stripe'; } 102 function wsu { \su "$@"; _ignore eval 'istripe; stripe'; } 103 104 alias su=wsu 105 alias cd=wcd 106 alias ftp=wftp 107 alias ssh=wssh 108 alias telnet=wtelnet 109 eval stripe 110 eval istripe 111 PS1=$PROMPT 112 fi 113 alias quit=exit 114 alias cls=clear 115 alias logout=exit 116 alias bye=exit 117 alias p='ps -l' 118 alias j=jobs 119 alias o='fg %-' 120 alias df='df -k' 121 alias du='du -k' 122 alias rsize='eval `resize`' 123;; 124*) # non-interactive 125;; 126esac 127# commands for both interactive and non-interactive shells 128 129# is $1 missing from $2 (or PATH) ? 130function no_path { 131 eval _v="\$${2:-PATH}" 132 case :$_v: in 133 *:$1:*) return 1;; # no we have it 134 esac 135 return 0 136} 137# if $1 exists and is not in path, append it 138function add_path { 139 [[ -d ${1:-.} ]] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1" 140} 141# if $1 exists and is not in path, prepend it 142function pre_path { 143 [[ -d ${1:-.} ]] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}" 144} 145# if $1 is in path, remove it 146function del_path { 147 no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: | 148 sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"` 149} 150