]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - examples/functions/kshenv
Imported from ../bash-2.05.tar.gz.
[thirdparty/bash.git] / examples / functions / kshenv
index 35cc21249494a3530d492ce3b09b6b0ed03f63dd..2b9a6ebb9bcca26d9be701a918dd6b505aecb899 100644 (file)
@@ -109,27 +109,39 @@ $1 == "'$cmd'" && $2 == "()" {printit=0; next; }
 #      whence -v "$*"
 #}
 
+#
+# ksh-like `cd': cd [-LP] [dir [change]]
+#
 cd()
 {
+       OPTIND=1
+       while getopts "LP" opt
+       do
+               case $opt in
+               L|P)    CDOPTS="$CDOPTS -$opt" ;;
+               *)      echo "$FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2
+                       return 2;;
+               esac
+       done
+
+       shift $(( $OPTIND - 1 ))
+
        case $# in
-       0)      builtin cd "$HOME" ;;
-       1)      builtin cd "$@" ;;
-       2)      old="$1"
-               new="$2"
-               # dir=$(echo "$PWD" | sed "s:$old:$new:g")
-               dir=${PWD//$old/$new}
-               case "$dir" in
-               "$PWD") case "$PWD" in
-                       *$old*) ;;
-                       *) echo "$FUNCNAME: bad substitution" >&2 ; return 1 ;;
-                       esac ;;
-               *)      echo "$dir"
-                       builtin cd "$dir"
-                       ;;
+       0)      builtin cd $CDOPTS "$HOME" ;;
+       1)      builtin cd $CDOPTS "$@" ;;
+       2)      old="$1" new="$2"
+               case "$PWD" in
+               *$old*) ;;
+               *)       echo "${0##*/}: $FUNCNAME: bad substitution" >&2 ; return 1 ;;
                esac
+
+               dir=${PWD//$old/$new}
+
+               builtin cd $CDOPTS "$dir" && echo "$PWD"
+
                ;;
-       *)      echo "$FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2
-               return 1 ;;
+       *)      echo "${0##*/}: $FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2
+               return 2 ;;
        esac
 }