blob: ed18cb179e012b7fb3909a175fe1570e90ff93a4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/usr/bin/env bash
# vim:syntax=sh:ts=4
# ----- PROMPT COLOURS ----- #
fgcolor () {
#echo "\\[\\033[38;5;"$1"m\\]"
echo "\033[38;5;${1}m"
}
bgcolor () {
#echo "\\[\\033[48;5;"$1"m\\]"
echo "\033[48;5;${1}m"
}
# This is Solaris bash compatible, so we cannot use + here for "at least once) but instead use the
# stupid old asterisk (*). Well, here hetting "no digits" practically won't hurt.
MYUID="$(id|sed 's/.*uid=\([0-9]*\).*/\1/g')";export MYUID
# ...because "empty" will hit the "any" condition in the end :)
case "$MYUID" in
0)
case "$OSNAME" in
debian) FGC1="fgcolor 88";FGC2="fgcolor 25";FGC3="fgcolor 38";;
arch) FGC1="fgcolor 88";FGC2="fgcolor 24";FGC3="fgcolor 240";;
redhat|fedora) FGC1="fgcolor 160";FGC2="fgcolor 88";FGC3="fgcolor 203";;
# with the advent of Rocky, we'll match the time to SUSE's blue and the hostname to
# the colour of Geeko:
#*suse|aix) FGC1="fgcolor 88";FGC2="fgcolor 22";FGC3="fgcolor 41";;
*sles*) FGC1="fgcolor 88";FGC2="fgcolor 22";FGC3="fgcolor 83";;
*suse|aix) FGC1="fgcolor 88";FGC2="fgcolor 30";FGC3="fgcolor 83";;
*centos*) FGC1="fgcolor 88";FGC2="fgcolor 25";FGC3="fgcolor 208";;
*solaris) FGC1="fgcolor 88";FGC2="fgcolor 31";FGC3="fgcolor 124";;
ubuntu) FGC1="fgcolor 88";FGC2="fgcolor 130";FGC3="fgcolor 215";;
rasp*) FGC1="fgcolor 88";FGC2="fgcolor 253";FGC3="fgcolor 126";;
rocky) FGC1="fgcolor 88";FGC2="fgcolor 22";FGC3="fgcolor 41";;
*) FGC1="fgcolor 88";FGC2="fgcolor 240";FGC3="fgcolor 244";;
esac
;;
*)
case "$OSNAME" in
debian) FGC1="fgcolor 25";FGC2="fgcolor 253";FGC3="fgcolor 38";;
arch) FGC1="fgcolor 24";FGC2="fgcolor 253";FGC3="fgcolor 239";;
redhat|fedora) FGC1="fgcolor 88";FGC2="fgcolor 253";FGC3="fgcolor 203";;
#*suse|aix) FGC1="fgcolor 22";FGC2="fgcolor 253";FGC3="fgcolor 41";;
*sles*) FGC1="fgcolor 22";FGC2="fgcolor 253";FGC3="fgcolor 83";;
*suse|aix) FGC1="fgcolor 30";FGC2="fgcolor 253";FGC3="fgcolor 83";;
*centos*) FGC1="fgcolor 25";FGC2="fgcolor 253";FGC3="fgcolor 208";;
*solaris) FGC1="fgcolor 31";FGC2="fgcolor 253";FGC3="fgcolor 124";;
ubuntu) FGC1="fgcolor 130";FGC2="fgcolor 253";FGC3="fgcolor 215";;
rasp*) FGC1="fgcolor 53";FGC2="fgcolor 253";FGC3="fgcolor 126";;
rocky) FGC1="fgcolor 22";FGC2="fgcolor 253";FGC3="fgcolor 41";;
*) FGC1="fgcolor 240";FGC2="fgcolor 253";FGC3="fgcolor 244";;
esac
;;
esac
# make it possible to draw user-defined colours
# shellcheck disable=SC1090
[ -r "${BBD}/prompt.bash.local" ] && source "${BBD}/prompt.bash.local"
# ----- USER SEP. AND HOSTNAME ----- #
UHSEP=" _æ_ "
[ -n "$TMUX_PANE" ]&&UHSEP="[T]"
[ -n "$BYOBU_WINDOW_NAME" ]&&UHSEP="[B]"
[ "$(hostname -s)" == "monitoring" ]&&PHN="$(hostname -f)"||PHN="$(hostname -s)"
# ----- ASSEMBLE THE PROMPT COMMAND ADDITION ----- #
__prompt_command() {
local EXIT="$?"
if [ "$EXIT" -lt 10 ];then
local EXIT2="00$EXIT"
elif [ "$EXIT" -lt 100 ];then
local EXIT2="0$EXIT"
else
local EXIT2="$EXIT"
fi
case "$MYUID" in
0)
PS1="\\# \[$(tput bold)\]\[$($FGC1)\]\\u\[$($FGC2)\] _æ_ $PHN \[$($FGC3)\]\\w \[$(tput sgr0)\]"
;;
*)
PS1="\\# \[$(tput bold)\]\[$($FGC1)\]\t \[$($FGC2)\]\\u$UHSEP\[$($FGC3)\]$PHN \\w \[$(tput sgr0)\]"
;;
esac
if command -v __git_ps1 >/dev/null 2>&1;then PS1+="$(__git_ps1 "%s ")";fi
if [ "$EXIT" -eq 0 ];then
PS1+="\[\033[0;32m\]# "
elif [ "$EXIT" -eq 255 ]||[ "$EXIT" -eq 127 ];then
PS1+="\[\033[0;33m\]$EXIT2 # "
elif [ "$EXIT" -eq 130 ];then
PS1+="\[\033[0;35m\]$EXIT2 # "
else
PS1+="\[\033[0;31m\]$EXIT2 # "
fi
PS1+="\[\033[0m\]"
}
# ----- ADD __prompt_command() TO $PROMPT_COMMAND ----- #
if ! printf "%b" "$PROMPT_COMMAND" | grep '__prompt_command' >/dev/null;then
case "$TERM" in
# adding in "screen" because tmux
xterm|xterm-color|xterm-256color|rxvt*|screen-256color|screen)
if [ -n "$PROMPT_COMMAND" ];then
export PROMPT_COMMAND="__prompt_command;${PROMPT_COMMAND}"
else
export PROMPT_COMMAND="__prompt_command"
fi
;;
*)
if [ -n "$PROMPT_COMMAND" ];then
export PROMPT_COMMAND="__prompt_command;${PROMPT_COMMAND}"
else
export PROMPT_COMMAND="__prompt_command"
fi
;;
esac
fi
# ----- ADD SSH ENV FILE TO PROMPT_COMMAND ----- #
if [ -r "$SSHENVFILE" ];then
if ! printf "%b" "$PROMPT_COMMAND" | grep "source $SSHENVFILE" >/dev/null;then
# we don't need to check whether PROMPT_COMMAND is set as after the paragraph
# above, something will be definitely set.
PROMPT_COMMAND="${PROMPT_COMMAND};source $SSHENVFILE"|tr -s ';'
fi
fi
# ----- HISTORY SUBMISSION IN $PROMPT_COMMAND ----- #
if ! printf "%b" "$PROMPT_COMMAND"|grep 'history -a' >/dev/null;then
if [ -n "$PROMPT_COMMAND" ];then
export PROMPT_COMMAND="$PROMPT_COMMAND;history -a;history -c;history -r"
else
export PROMPT_COMMAND="history -a;history -c;history -r"
fi
fi
|