diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2017-01-25 14:31:32 +1300 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2017-01-25 14:31:32 +1300 |
commit | e3f97d6c12e6e311b155ce24ce586717b1abc18b (patch) | |
tree | 4d7f5c0556499331218bf2897ef04bc2962aca12 | |
parent | Move Zsh keybinding setup to after ENV sourcing (diff) | |
download | dotfiles-e3f97d6c12e6e311b155ce24ce586717b1abc18b.tar.gz dotfiles-e3f97d6c12e6e311b155ce24ce586717b1abc18b.zip |
Show prompt prefix if a shell is exotic
That is, include e.g. "ksh:" as a prefix to the prompt if the user
appears to have Bash or Zsh (or anything else) as their login shell.
This is probably imperfect, but it's a start.
-rw-r--r-- | README.markdown | 3 | ||||
-rw-r--r-- | bash/bashrc.d/prompt.bash | 6 | ||||
-rw-r--r-- | ksh/kshrc.d/prompt.ksh | 14 | ||||
-rw-r--r-- | zsh/zshrc.d/prompt.zsh | 6 |
4 files changed, 29 insertions, 0 deletions
diff --git a/README.markdown b/README.markdown index 9c956d51..70234ed8 100644 --- a/README.markdown +++ b/README.markdown @@ -147,6 +147,9 @@ include these elements in this order: You can set `PROMPT_COLOR`, `PROMPT_PREFIX`, and `PROMPT_SUFFIX` too, which all do about what you'd expect. +If you start up Bash, Ksh, or Zsh and it detects that it's not normally your +`$SHELL`, the prompt will display an appropriate prefix. + This is all managed within the `prompt` function. There's some mildly hacky logic on `tput` codes included such that it should work correctly for most common terminals using both `termcap(5)` and `terminfo(5)`, including \*BSD diff --git a/bash/bashrc.d/prompt.bash b/bash/bashrc.d/prompt.bash index b22f118f..2bd70c2f 100644 --- a/bash/bashrc.d/prompt.bash +++ b/bash/bashrc.d/prompt.bash @@ -22,6 +22,12 @@ prompt() { # Add sub-commands; VCS, job, and return status checks PS1=$PS1'$(ret=$?;prompt vcs;prompt job;prompt ret)' + # Add a helpful prefix if this shell appears to be exotic + case ${SHELL##*/} in + (bash) ;; + (*) PS1=bash:$PS1 ;; + esac + # Add prefix and suffix PS1='${PROMPT_PREFIX}'$PS1'${PROMPT_SUFFIX}' diff --git a/ksh/kshrc.d/prompt.ksh b/ksh/kshrc.d/prompt.ksh index bf77f626..09c7de6e 100644 --- a/ksh/kshrc.d/prompt.ksh +++ b/ksh/kshrc.d/prompt.ksh @@ -22,6 +22,20 @@ function prompt { # count, and previous command return value PS1=$PS1'$(ret=$?;jobc=$(jobs -p|sed -n '\''$='\'');prompt pwd;prompt vcs;prompt job;prompt ret;:)' + # Add a helpful prefix if this shell appears to be exotic + typeset ksh + case $KSH_VERSION in + (*'93'*) ksh=ksh93 ;; + (*'PD KSH'*) ksh=pdksh ;; + (*'MIRBSD KSH'*) ksh=mksh ;; + esac + case ${SHELL##*/} in + ('') ;; + (ksh) ;; + ("$ksh") ;; + (*) PS1=$ksh:$PS1 ;; + esac + # Add prefix and suffix PS1='${PROMPT_PREFIX}'$PS1'${PROMPT_SUFFIX}' diff --git a/zsh/zshrc.d/prompt.zsh b/zsh/zshrc.d/prompt.zsh index cfac7ffd..f374dbec 100644 --- a/zsh/zshrc.d/prompt.zsh +++ b/zsh/zshrc.d/prompt.zsh @@ -18,6 +18,12 @@ prompt() { # Add sub-commands; VCS, job, and return status checks PS1=$PS1'$(ret=$?;prompt vcs;prompt job;prompt ret)' + # Add a helpful prefix if this shell appears to be exotic + case ${SHELL##*/} in + (zsh) ;; + (*) PS1=zsh:$PS1 ;; + esac + # Add prefix and suffix PS1='${PROMPT_PREFIX}'$PS1'${PROMPT_SUFFIX}' |