source: trunk/third/bash/examples/functions/whence @ 12959

Revision 12959, 990 bytes checked in by tb, 26 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r12958, which included commits to RCS files with non-trunk default branches.
Line 
1#
2# An almost-ksh compatible `whence' command.  This is as hairy as it is
3# because of the desire to exactly mimic ksh.
4#
5# This depends somewhat on knowing the format of the output of the bash
6# `builtin type' command.
7#
8# Chet Ramey
9# chet@ins.CWRU.Edu
10#
11whence()
12{
13        local vflag= path=
14
15        if [ "$#" = "0" ] ; then
16                echo "whence: argument expected"
17                return 1
18        fi
19        case "$1" in
20                -v) vflag=1
21                    shift 1
22                    ;;
23                -*) echo "whence: bad option: $1"
24                    return 1
25                    ;;
26                 *) ;;
27        esac
28
29        if [ "$#" = "0" ] ; then
30                echo "whence: bad argument count"
31                return 1
32        fi
33
34        for cmd
35        do
36                if [ "$vflag" ]  ; then
37                        echo $(builtin type $cmd | sed 1q)
38                else
39                        path=$(builtin type -path $cmd)
40                        if [ "$path" ] ; then
41                                echo $path
42                        else
43                                case "$cmd" in
44                                        /*) if [ -x "$cmd" ]; then
45                                                echo "$cmd"
46                                            fi
47                                            ;;
48                                         *) case "$(builtin type -type $cmd)" in
49                                                "") ;;
50                                                 *) echo "$cmd"
51                                                    ;;
52                                            esac
53                                            ;;
54                                esac
55                        fi
56                fi
57        done
58        return 0
59}
Note: See TracBrowser for help on using the repository browser.