# shellcheck shell=bash function _user-prompt() { local -r user='\\u' if [[ "${EUID}" -eq 0 ]]; then # Privileged users: local -r user_color="${bold_red?}" else # Standard users: local -r user_color="${bold_green?}" fi # Print the current user's name (colored according to their current EUID): echo -e "${user_color}${user}${normal?}" } function _host-prompt() { local -r host='\\h' # Check whether or not $SSH_TTY is set: if [[ -z "${SSH_TTY:-}" ]]; then # For local hosts, set the host's prompt color to blue: local -r host_color="${bold_blue?}" else # For remote hosts, set the host's prompt color to red: local -r host_color="${bold_red?}" fi # Print the current hostname (colored according to $SSH_TTY's status): echo -e "${host_color}${host}${normal?}" } function _user-at-host-prompt() { # Concatenate the user and host prompts into: user@host: echo -e "$(_user-prompt)${bold_white?}@$(_host-prompt)" } function _exit-status-prompt() { local -r prompt_string="${1}" local -r exit_status="${2}" # Check the exit status of the last command captured by $exit_status: if [[ "${exit_status}" -eq 0 ]]; then # For commands that return an exit status of zero, set the exit status's # notifier to green: local -r exit_status_color="${bold_green?}" else # For commands that return a non-zero exit status, set the exit status's # notifier to red: local -r exit_status_color="${bold_red?}" fi echo -ne "${exit_status_color}" if [[ "${prompt_string}" -eq 1 ]]; then # $PS1: echo -e " +${normal?} " elif [[ "${prompt_string}" -eq 2 ]]; then # $PS2: echo -e " |${normal?} " else # Default: echo -e " ?${normal?} " fi } function _ps1() { local -r time='\\t' echo -ne "${bold_white?}${time} " echo -ne "$(_user-at-host-prompt)" echo -e "${bold_white?}:${normal?}${PWD}" echo -e "$(_exit-status-prompt 1 "${exit_status}")" } function _ps2() { echo -e "$(_exit-status-prompt 2 "${exit_status}")" } function prompt_command() { # Capture the exit status of the last command: local -r exit_status="${?}" # Build the $PS1 prompt: PS1="$(_ps1)" # Build the $PS2 prompt: PS2="$(_ps2)" } safe_append_prompt_command prompt_command # vim: sw=2 ts=2 et: