/etc/zsh/zshrc: check for present directory inside dirstack code before switching...
[grml-etc-core.git] / etc / zsh / zshrc
index 9f5b88e..6b71d16 100644 (file)
@@ -3,7 +3,7 @@
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
-# Latest change: Son Apr 22 18:37:24 CEST 2007 [mika]
+# Latest change: Mit Mai 23 10:22:10 CEST 2007 [mika]
 ################################################################################
 # This file is sourced only for interactive shells. It
 # should contain commands to set up aliases, functions,
 # check for user, if not running as root set $SUDO to sudo
  (( EUID != 0 )) && SUDO='sudo' || SUDO=''
 
+  function salias() {
+    # creates an alias and precedes the command with
+    # sudo if $EUID is not zero.
+    local only=0 ; local multi=0
+    while [[ ${1} == -* ]] ; do
+      case ${1} in
+        (-o) only=1 ;;
+        (-a) multi=1 ;;
+        (--) shift ; break ;;
+        (-h)
+          printf 'usage: salias [-h|-o|-a] <alias-expression>\n'
+          printf '  -h      shows this help text.\n'
+          printf '  -a      replace '\'' ; '\'' sequences with '\'' ; sudo '\''.\n'
+          printf '          be careful using this option.\n'
+          printf '  -o      only sets an alias if a preceding sudo would be needed.\n'
+          return 0
+          ;;
+        (*) printf "unkown option: '%s'\n" "${1}" ; return 1 ;;
+      esac
+      shift
+    done
+    if (( ${#argv} > 1 )) ; then
+      printf 'Too many arguments %s\n' "${#argv}"
+      return 1
+    fi
+    key="${1%%\=*}" ;  val="${1#*\=}"
+    if (( EUID == 0 )) && (( only == 0 )); then
+      alias -- "${key}=${val}"
+    elif (( EUID > 0 )) ; then
+      (( multi > 0 )) && val="${val// ; / ; sudo }"
+      alias -- "${key}=sudo ${val}"
+    fi
+    return 0
+  }
+
 # change directory to home on first invocation of zsh
 # important for rungetty -> autologin
 # Thanks go to Bart Schaefer!
@@ -235,6 +270,7 @@ fi
    'fbmplayer' 'mplayer -vo -fs -zoom fbdev'
    'fblinks' 'links2 -driver fb'
    'insecssh' 'ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
+   'insecscp' 'scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
    'fori' 'for i ({..}) { }'
    'cx' 'chmod +x'
    'e'  'print -l'
@@ -412,7 +448,7 @@ fi
   if [[ -f ~/.zdirs ]] && [[ ${#dirstack[*]} -eq 0 ]]; then
      dirstack=( ${(uf)"$(< ~/.zdirs)"} )
      # "cd -" won't work after login by just setting $OLDPWD, so
-     cd $dirstack[0] && cd $OLDPWD
+     [[ -d $dirstack[0] ]] && cd $dirstack[0] && cd $OLDPWD
   fi
   chpwd() {
     builtin dirs -pl >! ~/.zdirs
@@ -624,6 +660,7 @@ ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# "
        unsetopt prompt_cr
        export PS1="%m%# "
        nice -n -20 speechd-up
+       sleep 2
        flite -o play -t "Finished setting up software synthesizer"
     fi
   '
@@ -694,12 +731,12 @@ Enjoy your grml system with the zsh!$reset_color"
     alias acs='apt-cache search'
     alias acsh='apt-cache show'
     alias acp='apt-cache policy'
-    alias adg="$SUDO apt-get dist-upgrade"
-    alias agi="$SUDO apt-get install"
-    alias ati="$SUDO aptitude install"
-    alias ag="$SUDO apt-get upgrade"
-    alias au="$SUDO apt-get update"
-    alias up="$SUDO aptitude update ; $SUDO aptitude upgrade"
+    salias adg="apt-get dist-upgrade"
+    salias agi="apt-get install"
+    salias ati="aptitude install"
+    salias ag="apt-get upgrade"
+    salias au="apt-get update"
+    salias -a up="aptitude update ; aptitude upgrade"
     alias dbp='dpkg-buildpackage'
     alias ge='grep-excuses'
 
@@ -950,6 +987,10 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
   if [ -x /usr/sbin/rebuildfstab ] ; then
      alias grml-rebuildfstab='rebuildfstab -v -r -config'
   fi
+
+  if [ -x /usr/sbin/grml-debootstrap ] ; then
+     alias debian2hd='print "Installing debian to harddisk is possible via using grml-debootstrap." ; return 1'
+  fi
 }
 # }}}
 
@@ -1150,6 +1191,17 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
   }
   functions peval &>/dev/null && alias calc=peval
 
+  # brltty seems to have problems with utf8 environment and/or font Uni3-Terminus16 under
+  # certain circumstances, so work around it, no matter which environment we have
+  brltty() {
+    if [ -z "$DISPLAY" ] ; then
+       consolechars -f /usr/share/consolefonts/default8x16.psf.gz
+       command brltty "$@"
+    else
+       command brltty "$@"
+    fi
+  }
+
   # Switching shell safely and efficiently? http://www.zsh.org/mla/workers/2001/msg02410.html
   # bash() {
   #  NO_SWITCH="yes" command bash "$@"