Created
April 7, 2018 19:01
-
-
Save Trucido/ba9cc2aee2e2d276703160dee4d82eab to your computer and use it in GitHub Desktop.
PROMPT_COMMAND
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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