blob: 26b00a990a070571d9e4ef67365578ccfcf2c932 [file] [log] [blame]
Jari Aalto28ef6c32001-04-06 19:14:31 +00001#
Chet Rameyac50fba2014-02-26 09:36:43 -05002# Chet Ramey <chet.ramey@case.edu>
3#
4# Copyright 2001 Chester Ramey
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2, or (at your option)
9# any later version.
10#
11# TThis program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program; if not, write to the Free Software Foundation,
18# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
20#
Jari Aalto28ef6c32001-04-06 19:14:31 +000021# ksh-like `cd': cd [-LP] [dir [change]]
22#
23cd()
24{
25 OPTIND=1
26 while getopts "LP" opt
27 do
28 case $opt in
29 L|P) CDOPTS="$CDOPTS -$opt" ;;
30 *) echo "$FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2
31 return 2;;
32 esac
33 done
34
35 shift $(( $OPTIND - 1 ))
36
37 case $# in
38 0) builtin cd $CDOPTS "$HOME" ;;
39 1) builtin cd $CDOPTS "$@" ;;
40 2) old="$1" new="$2"
41 case "$PWD" in
42 *$old*) ;;
43 *) echo "${0##*/}: $FUNCNAME: bad substitution" >&2 ; return 1 ;;
44 esac
45
46 dir=${PWD//$old/$new}
47
48 builtin cd $CDOPTS "$dir" && echo "$PWD"
49
50 ;;
51 *) echo "${0##*/}: $FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2
52 return 2 ;;
53 esac
54}