l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
Page last updated:
2012 Feb 27 12:17

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] Bash completion mystery
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] Bash completion mystery

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@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.
      -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
    	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
      NAME	Command name to be interpreted.
    Exit Status:
    Returns success if all of the NAMEs are found; fails if any are not

vox-tech mailing list

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
EDGE Tech Corp.
For donating some give-aways for our meetings.