Converting a zsh prompt to bash

Parv parv at pair.com
Tue May 16 09:38:55 PDT 2006


in message <7.0.1.0.2.20060516102254.021e2b50 at broadpark.no>,
wrote Kyrre Nygard thusly...
>
> 
> This one, with a real nice color setting:
> 
> (kyrre at merhaba)(09:58+16/05)
> (%:~)
> 
> Requires all this:
> 
> PROMPT=$'%{\e[01;36m%}(%{\e[22;36m%}%n%{\e[01;30m%}@'
> PROMPT+=$'%{\e[22;36m%}%m%{\e[01;36m%})%{\e[01;36m%}%{\e[01;36m%}('
> PROMPT+=$'%{\e[22;36m%}%D{%H:%M}%{\e[01;30m%}+%{\e[22;36m%}%D{%d/%m}'
> PROMPT+=$'%{\e[01;36m%})%{\e[01;30m\e[00m%}\n%{\e[01;36m%}('
> PROMPT+=$'%{\e[22;36m%}%#%{\e[01;30m%}:%{\e[22;36m%}%~%{\e[01;36m%})'
> PROMPT+=$'%{\e[01;30m\e[00m%} '
> 
> if [[ `whoami` = root ]] then
>         PROMPT=$'%{\e[01;31m%}(%{\e[22;31m%}%n%{\e[01;30m%}@'
>         PROMPT+=$'%{\e[22;31m%}%m%{\e[01;31m%})%{\e[01;31m%}%{\e[01;31m%}('
>         PROMPT+=$'%{\e[22;31m%}%D{%H:%M}%{\e[01;30m%}+%{\e[22;31m%}%D{%d/%m}'
>         PROMPT+=$'%{\e[01;31m%})%{\e[01;30m\e[00m%}\n%{\e[01;31m%}('
>         PROMPT+=$'%{\e[22;31m%}%#%{\e[01;30m%}:%{\e[22;31m%}%~%{\e[01;31m%})'
>         PROMPT+=$'%{\e[01;30m\e[00m%} '
> fi
> 
> I was wondering, were I to convert to bash, how would it then look like?

All you need to do is replace zsh provided format strings to that of
similar  bash escape sequences.  For example, zsh '%n' (for
username) corresponds to bash '\u', '%~' to '\w', and so on.

I personally put the color, bold, normal, etc. sequences in a
separate file, which is sourced inside the file setting prompt.
That gives less of gobbledygook to parse.  For zsh, i have somewhere
in ~/.zshrc ...

  #  http://www103.pair.com/parv/comp/unix/cf/sh/var/colors
  . ~/cf/sh/var/colors

  case $TERM in
    *xterm* | *rxvt* )
      PS1="# ?:%? %j %l ${bold}${yellow_fg}%~${normal}${normal}"
      PS1="$PS1 %n.${bold}${cyan_fg}%m${normal}${normal}"
      PS1="
  $PS1 (%D{%a %b%d %I%M})
  #! "
      export PS1
    ;;

    * )
      PS1="# %j %n@%m %l ${bold}%3~${normal}
  # "
      export PS1
    ;;
  esac


... similar thing is done for bash prompt.


  - Parv

-- 



More information about the freebsd-questions mailing list