On Fri, 2012-02-24 at 07:55 -0800, Wes Hardaker wrote:
> >>>>> On Thu, 23 Feb 2012 19:51:27 -0800, Bryan Richter 
> >>>>> <[email protected]> said:
> 
> BR> Functions can be discovered with 'declare -f'.
> 
> The problem with todays environment is that there is real-executables,
> aliases and functions.  Aliases are pretty much lame in bash so everyone
> uses functions (which can take arguments, etc).
> 
> But in the end, there are in fact 3 places to look for a definition.  So
> about a month ago I wrote this:
> 
>     wh()       {
>         prog="$1"
>         if [ "`declare -F $prog`" != "" ] ; then
>             declare -f $prog
>         elif alias $prog > /dev/null 2>&1 ; then
>             alias $prog
>         else
>             which $prog
>         fi
>     }
> 
> Which if you use in replace of `which` checks all three sources and
> reports the definition or location to you.


Just use bash's `type` builtin instead. It covers everything you must
mentioned, plus it identifies bash builtins.



type: type [-afptP] name [name ...]
    Display information about command type.
    
    For each NAME, indicate how it would be interpreted if used as a
    command name.
    
    Options:
      -a        display all locations containing an executable named NAME;
        includes aliases, builtins, and functions, if and only if
        the `-p' option is not also used
      -f        suppress shell function lookup
      -P        force a PATH search for each NAME, even if it is an alias,
        builtin, or function, and returns the name of the disk file
        that would be executed
      -p        returns either the name of the disk file that would be
executed,
        or nothing if `type -t NAME' would not return `file'.
      -t        output a single word which is one of `alias', `keyword',
        `function', `builtin', `file' or `', if NAME is an alias, shell
        reserved word, shell function, shell builtin, disk file, or not
        found, respectively
    
    Arguments:
      NAME      Command name to be interpreted.
    
    Exit Status:
    Returns success if all of the NAMEs are found; fails if any are not
found.

_______________________________________________
vox-tech mailing list
[email protected]
http://lists.lugod.org/mailman/listinfo/vox-tech

Reply via email to