[vox-tech] Bash completion mystery
Chanoch (Ken) Bloom
kbloom at gmail.com
Sat Feb 25 16:04:47 PST 2012
On Fri, 2012-02-24 at 07:55 -0800, Wes Hardaker wrote:
> >>>>> On Thu, 23 Feb 2012 19:51:27 -0800, Bryan Richter <bryan.richter at gmail.com> 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.
More information about the vox-tech
mailing list