Unexpand ~ in short prompt.
authorIain Patterson <me@iain.cx>
Tue, 2 Feb 2016 13:53:21 +0000 (13:53 +0000)
committerIain Patterson <me@iain.cx>
Thu, 11 Feb 2016 13:09:16 +0000 (13:09 +0000)
.profile.d/ps1.bashrc

index 0667d0f..7bd93b7 100644 (file)
@@ -200,27 +200,28 @@ function __ps1_colon() {
 }
 
 function __ps1_short() {
+  local pwd=${PWD/#$HOME/\~}
   local dirtrim=${PROMPT_DIRTRIM//[^0-9]/}
 
   if [ "${dirtrim:0:1}" = "0" ]; then
-    echo "$PWD"
+    echo "$pwd"
     return $1
   fi
 
   dirtrim=${dirtrim##0}
   if [ -z "$dirtrim" ]; then
-    local prompt="$USER$HOSTNAME$PWD"
+    local prompt="$USER$HOSTNAME$pwd"
     local width=$(((COLUMNS*2)/3))
     if [ ${#prompt} -le ${width:-53} ]; then
-      echo "$PWD"
+      echo "$pwd"
       return $1
     else
       dirtrim=1
     fi
   fi
 
-  local dirname=${PWD##*/}
-  local basename=${PWD%/$dirname}
+  local dirname=${pwd##*/}
+  local basename=${pwd%/$dirname}
   local reversed=
   local component
   for component in ${basename//\// }; do
@@ -229,15 +230,16 @@ function __ps1_short() {
   local n=1
   local short=
   for component in $reversed; do
+    [ $n = 1 -a "$PWD" = "$pwd" ] || short="/$short"
     if [ $n -ge $dirtrim ]; then
-      short="/${component:0:1}$short"
+      short="${component:0:1}$short"
     else
-      short="/$component$short"
+      short="$component$short"
     fi
     n=$((n+1))
   done
 
-  echo "$short/$dirname"
+  echo "$short$dirname"
   return $1
 }