Skip to content

Instantly share code, notes, and snippets.

@Trucido
Created April 7, 2018 19:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Trucido/ba9cc2aee2e2d276703160dee4d82eab to your computer and use it in GitHub Desktop.
Save Trucido/ba9cc2aee2e2d276703160dee4d82eab to your computer and use it in GitHub Desktop.
PROMPT_COMMAND
if [ -z "$PROMPT_COMMAND" ]; then
case $TERM in
xterm*|vte*)
# check /etc/sysconfig and /etc/default for expert custom file first
# Debian example: 'echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
elif [ -e /etc/default/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/default/bash-prompt-xterm
elif [[ -e "${XDG_CONFIG_HOME:-$HOME/.config}/bash-prompt-xterm" ]]; then
PROMPT_COMMAND=${XDG_CONFIG_HOME:-$HOME/.config}/bash-prompt-xterm
elif [ "${VTE_VERSION:-0}" -ge 3405 ]; then
# If not found, search for vte.sh only if we're in a libvte terminal.
if [ -r /etc/profile.d/vte.sh ]; then
. /etc/profile.d/vte.sh && PROMPT_COMMAND="__vte_prompt_command"
elif [ -r /etc/profile.d/vte-2.91.sh ]; then
. /etc/profile.d/vte-2.91.sh && PROMPT_COMMAND="__vte_prompt_command"
elif [ -r /etc/local/profile.d/vte.sh ]; then
. /etc/local/profile.d/vte.sh && PROMPT_COMMAND="__vte_prompt_command"
else
for v in /etc/profile.d/vte*.sh; do
if [ -r "$v" ]; then
. "$v" && PROMPT_COMMAND="__vte_prompt_command"
else
# no file found so we fallback to hardcoded default.
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'
fi
done
unset v
fi
else
# Else no prompt or vte file found, or not in a libvte compatible terminal,
# fallback to hardcoded default.
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'
fi
;;
screen*)
# same thing, check if custom file first, else use fallback.
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
elif [ -e /etc/default/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/default/bash-prompt-screen
elif [[ -e "${XDG_CONFIG_HOME:-$HOME/.config}/bash-prompt-screen" ]]; then
PROMPT_COMMAND=${XDG_CONFIG_HOME:-$HOME/.config}/bash-prompt-screen
else
PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'
fi
;;
#tmux*) # Should we add another case for tmux or byobu? Or do most use screen/xterm termcaps?
#;;# The catchall below seems to work, might have to add more and unset there.
*)
if [ -e /etc/sysconfig/bash-prompt-default ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
elif [ -e /etc/default/bash-prompt-default ]; then
PROMPT_COMMAND=/etc/default/bash-prompt-default
elif [[ -e "${XDG_CONFIG_HOME:-$HOME/.config}/bash-prompt-default" ]]; then
PROMPT_COMMAND=${XDG_CONFIG_HOME:-$HOME/.config}/bash-prompt-default
else
# TODO: test if this breaks anything, seems to work in tmux and ssh terms where others didn't.
PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'
fi
;;
esac
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment