Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

243 rader
4.9 KiB

  1. # common/.profile.d/20-functions-ps1.sh
  2. # Get user name of current user even if
  3. # $USER isn't set
  4. # Use id if we don't have $USER
  5. user_name()
  6. {
  7. if [ -z $USER ]; then
  8. echo $(id | awk -F\( '{print $2}' | sed -e 's/[)].*//g')
  9. else
  10. echo $USER
  11. fi
  12. }
  13. # duh
  14. am_i_root()
  15. {
  16. [ "$(user_name)" = 'root' ]
  17. }
  18. userps1name=
  19. hostps1name=
  20. host_name()
  21. {
  22. name=''
  23. case $(os_type) in
  24. osx) name=$(hostname -s) ;;
  25. *) name=$(uname -n) ;;
  26. esac
  27. echo $name
  28. }
  29. host_ps1name()
  30. {
  31. if [[ ${hostps1name:+1} != 1 ]]; then
  32. hostps1name=$(host_name)
  33. if [[ ${pscolors:+1} == 1 ]]; then
  34. hostps1name="%{$fg[blue]%}$hostps1name%{$reset_color%}"
  35. fi
  36. fi
  37. echo $hostps1name
  38. }
  39. user_ps1name()
  40. {
  41. if [[ ${userps1name:+1} != 1 ]]; then
  42. case $(user_name) in
  43. mitch)
  44. userps1name='me'
  45. if [[ ${pscolors:+1} == 1 ]]; then
  46. userps1name="%{$fg[blue]%}$userps1name%{$reset_color%}"
  47. fi
  48. ;;
  49. root)
  50. userps1name='root'
  51. if [[ ${pscolors:+1} == 1 ]]; then
  52. userps1name="%{$fg[red]%}$userps1name%{$reset_color%}"
  53. fi
  54. ;;
  55. *)
  56. userps1name=$(user_name)
  57. if [[ ${pscolors:+1} == 1 ]]; then
  58. userps1name="%{$fg[cyan]%}$userps1name%{$reset_color%}"
  59. fi
  60. ;;
  61. esac
  62. fi
  63. echo $userps1name
  64. }
  65. # using who am i, see if our pty is owned by someone else.
  66. user_ptyname()
  67. {
  68. name=$(who am i | sed -e "s/[ ].*//1")
  69. [ ${name} == '' ] && name=$LOGNAME
  70. echo $name
  71. }
  72. ps1_user_host()
  73. {
  74. echo "$(user_ps1name)@$(host_ps1name)"
  75. }
  76. ps1_special()
  77. {
  78. am_i_root
  79. [ $? -eq 0 ] && echo '# ' || echo '$ '
  80. }
  81. ps1()
  82. {
  83. echo "$(ps1_user_host) $(ps1_special)"
  84. }
  85. ostype=''
  86. oskernel=''
  87. osarch=''
  88. osmajor=''
  89. osminor=''
  90. osversion=''
  91. osuname_s=''
  92. osrelease=''
  93. osprefix=''
  94. osreleasefile=''
  95. # where /etc/*release files exist
  96. archreleasefile='/etc/arch-release'
  97. debianreleasefile='/etc/debian_version'
  98. susereleasefile='/etc/SuSE-release'
  99. redhatreleasefile='/etc/Redhat-release'
  100. solarisreleasefile='/etc/release'
  101. freebsdreleasefile='/etc/freebsd-update.conf'
  102. os_release()
  103. {
  104. case $(os_uname_s) in
  105. Linux) osrelease=$(cat $osreleasefile) ;;
  106. Darwin) osrelease=$(sw_vers -productVersion) ;;
  107. bsd) osrelease=$(uname -r) ;;
  108. *) osrelease='' ;;
  109. esac
  110. echo $osrelease
  111. }
  112. os_kernel()
  113. {
  114. if [[ ${oskernel:+1} != 1 ]]; then
  115. oskernel=$(uname -r)
  116. fi
  117. echo $oskernel
  118. }
  119. os_arch()
  120. {
  121. if [[ ${osarch:+1} != 1 ]]; then
  122. osarch=$(uname -m)
  123. fi
  124. echo $osarch
  125. }
  126. os_uname_s()
  127. {
  128. if [[ ${os_uname_s:+1} != 1 ]]; then
  129. osuname_s=$(uname -s)
  130. fi
  131. echo $osuname_s
  132. }
  133. function os_type {
  134. if [[ ${ostype:+1} != 1 ]]; then
  135. if [[ -f $archreleasefile ]]; then
  136. ostype='arch'
  137. osreleasefile=$archreleasefile
  138. elif [[ -f $debianreleasefile ]]; then
  139. ostype='debian'
  140. osreleasefile=$debianreleasefile
  141. elif [[ -f $susereleasefile ]]; then
  142. ostype='suse'
  143. osreleasefile=$susereleasefile
  144. elif [[ -f $redhatreleasefile ]]; then
  145. ostype='redhat'
  146. osreleasefile=$redhatreleasefile
  147. elif [[ $(os_uname_s) == 'SunOS' ]]; then
  148. ostype='sun'
  149. elif [[ $(os_uname_s) == 'Darwin' ]]; then
  150. ostype='osx'
  151. elif [[ -f $freebsdreleasefile ]]; then
  152. ostype='bsd'
  153. else
  154. echo "No idea what os type this is."
  155. fi
  156. fi
  157. echo $ostype
  158. }
  159. os_major()
  160. {
  161. if [[ ${osmajor:+1} != 1 ]]; then
  162. case $(os_type) in
  163. arch) osmajor='arch' ;;
  164. debian) osmajor=$(os_release | sed -e 's/\.[0-9]\{1\}//2') ;;
  165. suse)
  166. osmajor=$(os_release | grep 'VER' | sed -e 's/.*\=\ //g') ;;
  167. redhat) osmajor='zomg' ;;
  168. sun) osmajor=$(uname -r) ;;
  169. osx) osmajor=$(os_release | sed -e 's/\.[0-9]\{1\}//2') ;;
  170. bsd) osmajor=$(os_release | sed -e 's/\.*//') ;;
  171. *) osmajor='?'
  172. esac
  173. fi
  174. echo $osmajor
  175. }
  176. os_minor()
  177. {
  178. if [[ ${osminor:+1} != 1 ]]; then
  179. case $(os_type) in
  180. arch) osminor='zomg' ;;
  181. debian) osminor=$(os_release | sed -e 's/[0-9]\.[0-9]\{1\}\.//1') ;;
  182. suse)
  183. osminor=$(os_release | grep 'PATCH' | sed -e 's/.*\=\ //g') ;;
  184. redhat) osminor='zomg' ;;
  185. sun) osminor=$(uname -r) ;;
  186. osx) osminor=$(os_release | sed -e 's/10\.[0-9]\{1\}\.//1') ;;
  187. bsd) osminor=$(os_release | sed -e 's/\d+\.[0-9]\{1\}\-//1') ;;
  188. *) osminor='?'
  189. esac
  190. fi
  191. echo $osminor
  192. }
  193. os_version()
  194. {
  195. if [[ ${osversion:+1} != 1 ]]; then
  196. case $(os_type) in
  197. arch) osversion='zomg' ;;
  198. debian) osversion=$(os_release) ;;
  199. suse) osversion="${osmajor}u${osminor}" ;;
  200. redhat) osversion='zomg' ;;
  201. sun) osversion=$osmajor ;;
  202. osx) osversion=$(os_release) ;;
  203. bsd) osversion="${osmajor}.${osminor}" ;;
  204. *) osversion='wtf?' ;;
  205. esac
  206. fi
  207. echo $osversion
  208. }
  209. os_prefix()
  210. {
  211. if [[ ${osprefix:+1} != 1 ]]; then
  212. case $(os_type) in
  213. osx) osprefix="$(os_major)-$(os_uname_s)-$(os_arch)" ;;
  214. *) osprefix="$(os_type)-$(os_uname_s)-$(os_arch)" ;;
  215. esac
  216. fi
  217. echo $osprefix
  218. }
  219. # setup the one thing we need for all of the functions.
  220. os_type > /dev/null 2>&1