KSH-How do I make a variable run a function upon invocation?
    Eric H. Herrin II 
    eric at ms.uky.edu
       
    Fri Apr 12 07:39:32 AEST 1991
    
    
  
jbn35564 at uxa.cso.uiuc.edu (J.B. Nicholson) writes:
>In KSH I want to make ${PS1} take on a value where it executes a function called
>PS1, but not take on the output from the function itself.  Here's what I mean:
>function PS1 {
>shrunkhome=${PWD%${HOME}/}
>case ${shrunkhome} in
>        ${HOME})        shrunkhome=\~/ ;;
>esac
>HOSTNAME=$(hostname)
>print -n '<'${USER}'@'${HOSTNAME%%.*}':'${shrunkhome}'> ' ;;
>}
Try this:
function _cd {
   unalias cd
   cd $1
   alias cd=_cd
   if [ "${PWD#${HOME}}" != "${PWD}" ]
   then
           PS1='"${USER}@${HOSTNAME%%.*}:~/${PWD#${HOME}}> "'
   else
           PS1='"${USER}@${HOSTNAME%%.*}:${PWD}> "'
   fi
}
and alias cd to '_cd' as you suggested in your original article.  I
did test this and it does work. (ksh version 11/16/88d)  You might
want to put some error checking in the _cd function though.
-- 
|  	Eric H. Herrin II - {rutgers,uunet}!ukma!eric, eric at ms.uky.edu	     |
    
    
More information about the Comp.unix.shell
mailing list