|
- # common/.profile.d/20-functions-ps1.sh
-
- # Get user name of current user even if
- # $USER isn't set
- # Use id if we don't have $USER
- user_name()
- {
- if [ -z $USER ]; then
- echo $(id | awk -F\( '{print $2}' | sed -e 's/[)].*//g')
- else
- echo $USER
- fi
- }
-
- # duh
- am_i_root()
- {
- [ "$(user_name)" = 'root' ]
- }
-
- userps1name=
- hostps1name=
-
- host_name()
- {
- name=''
- case $(os_type) in
- osx) name=$(hostname -s) ;;
- *) name=$(uname -n) ;;
- esac
-
- echo $name
- }
- host_ps1name()
- {
- if [[ ${hostps1name:+1} != 1 ]]; then
- hostps1name=$(host_name)
- if [[ ${pscolors:+1} == 1 ]]; then
- hostps1name="%{$fg[blue]%}$hostps1name%{$reset_color%}"
- fi
- fi
- echo $hostps1name
- }
-
- user_ps1name()
- {
- if [[ ${userps1name:+1} != 1 ]]; then
- case $(user_name) in
- mitch)
- userps1name='me'
- if [[ ${pscolors:+1} == 1 ]]; then
- userps1name="%{$fg[blue]%}$userps1name%{$reset_color%}"
- fi
- ;;
- root)
- userps1name='root'
- if [[ ${pscolors:+1} == 1 ]]; then
- userps1name="%{$fg[red]%}$userps1name%{$reset_color%}"
- fi
- ;;
- *)
- userps1name=$(user_name)
- if [[ ${pscolors:+1} == 1 ]]; then
- userps1name="%{$fg[cyan]%}$userps1name%{$reset_color%}"
- fi
- ;;
- esac
- fi
- echo $userps1name
- }
-
- # using who am i, see if our pty is owned by someone else.
- user_ptyname()
- {
- name=$(who am i | sed -e "s/[ ].*//1")
- [ ${name} == '' ] && name=$LOGNAME
- echo $name
- }
-
- ps1_user_host()
- {
- echo "$(user_ps1name)@$(host_ps1name)"
- }
-
- ps1_special()
- {
- am_i_root
- [ $? -eq 0 ] && echo '# ' || echo '$ '
- }
-
- ps1()
- {
- echo "$(ps1_user_host) $(ps1_special)"
- }
-
- ostype=''
- oskernel=''
- osarch=''
- osmajor=''
- osminor=''
- osversion=''
- osuname_s=''
- osrelease=''
- osprefix=''
- osreleasefile=''
-
- # where /etc/*release files exist
- archreleasefile='/etc/arch-release'
- debianreleasefile='/etc/debian_version'
- susereleasefile='/etc/SuSE-release'
- redhatreleasefile='/etc/Redhat-release'
- solarisreleasefile='/etc/release'
- freebsdreleasefile='/etc/freebsd-update.conf'
-
- os_release()
- {
- case $(os_uname_s) in
- Linux) osrelease=$(cat $osreleasefile) ;;
- Darwin) osrelease=$(sw_vers -productVersion) ;;
- bsd) osrelease=$(uname -r) ;;
- *) osrelease='' ;;
- esac
- echo $osrelease
- }
-
- os_kernel()
- {
- if [[ ${oskernel:+1} != 1 ]]; then
- oskernel=$(uname -r)
- fi
- echo $oskernel
- }
-
- os_arch()
- {
- if [[ ${osarch:+1} != 1 ]]; then
- osarch=$(uname -m)
- fi
- echo $osarch
- }
-
- os_uname_s()
- {
- if [[ ${os_uname_s:+1} != 1 ]]; then
- osuname_s=$(uname -s)
- fi
- echo $osuname_s
- }
-
- function os_type {
- if [[ ${ostype:+1} != 1 ]]; then
- if [[ -f $archreleasefile ]]; then
- ostype='arch'
- osreleasefile=$archreleasefile
- elif [[ -f $debianreleasefile ]]; then
- ostype='debian'
- osreleasefile=$debianreleasefile
- elif [[ -f $susereleasefile ]]; then
- ostype='suse'
- osreleasefile=$susereleasefile
- elif [[ -f $redhatreleasefile ]]; then
- ostype='redhat'
- osreleasefile=$redhatreleasefile
- elif [[ $(os_uname_s) == 'SunOS' ]]; then
- ostype='sun'
- elif [[ $(os_uname_s) == 'Darwin' ]]; then
- ostype='osx'
- elif [[ -f $freebsdreleasefile ]]; then
- ostype='bsd'
- else
- echo "No idea what os type this is."
- fi
- fi
- echo $ostype
- }
-
- os_major()
- {
- if [[ ${osmajor:+1} != 1 ]]; then
- case $(os_type) in
- arch) osmajor='arch' ;;
- debian) osmajor=$(os_release | sed -e 's/\.[0-9]\{1\}//2') ;;
- suse)
- osmajor=$(os_release | grep 'VER' | sed -e 's/.*\=\ //g') ;;
- redhat) osmajor='zomg' ;;
- sun) osmajor=$(uname -r) ;;
- osx) osmajor=$(os_release | sed -e 's/\.[0-9]\{1\}//2') ;;
- bsd) osmajor=$(os_release | sed -e 's/\.*//') ;;
- *) osmajor='?'
- esac
- fi
- echo $osmajor
- }
-
- os_minor()
- {
- if [[ ${osminor:+1} != 1 ]]; then
- case $(os_type) in
- arch) osminor='zomg' ;;
- debian) osminor=$(os_release | sed -e 's/[0-9]\.[0-9]\{1\}\.//1') ;;
- suse)
- osminor=$(os_release | grep 'PATCH' | sed -e 's/.*\=\ //g') ;;
- redhat) osminor='zomg' ;;
- sun) osminor=$(uname -r) ;;
- osx) osminor=$(os_release | sed -e 's/10\.[0-9]\{1\}\.//1') ;;
- bsd) osminor=$(os_release | sed -e 's/\d+\.[0-9]\{1\}\-//1') ;;
- *) osminor='?'
- esac
- fi
- echo $osminor
- }
-
- os_version()
- {
- if [[ ${osversion:+1} != 1 ]]; then
- case $(os_type) in
- arch) osversion='zomg' ;;
- debian) osversion=$(os_release) ;;
- suse) osversion="${osmajor}u${osminor}" ;;
- redhat) osversion='zomg' ;;
- sun) osversion=$osmajor ;;
- osx) osversion=$(os_release) ;;
- bsd) osversion="${osmajor}.${osminor}" ;;
- *) osversion='wtf?' ;;
- esac
- fi
- echo $osversion
- }
-
- os_prefix()
- {
- if [[ ${osprefix:+1} != 1 ]]; then
- case $(os_type) in
- osx) osprefix="$(os_major)-$(os_uname_s)-$(os_arch)" ;;
- *) osprefix="$(os_type)-$(os_uname_s)-$(os_arch)" ;;
- esac
- fi
- echo $osprefix
- }
-
- # setup the one thing we need for all of the functions.
- os_type > /dev/null 2>&1
|