On 02/23/2016 11:18 AM, Jan Verbeek wrote: > Function definitions that use a bad function name (such as "-" and "=") > are accepted if the function name already exists as an alias. For example:
Not necessarily a bug.
>
> $ -
> dash: 1: -: not found
> $ - () { echo hello; }
> dash: 2: Syntax error: Bad function name
> $ -
> dash: 2: -: not found
> $ alias -=true
> $ -
This is equivalent to running 'true'.
> $ - () { echo hello; }
This is equivalent to running 'true () { echo hello; }' - the alias
expansion happens BEFORE the function definition is even parsed. You
are NOT defining a function named '-', but one named 'true'.
> $ -
This is again equivalent to running 'true' - except that now the
function name 'true' exists and bypasses the shell builtin.
> hello
> $
So the only thing remaining is to determine if it is legal to have a
function override the name of a regular shell builtin. But
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_01
under "Command Search and Execution" states that function names have
priority over regular built-ins (so yes, creating a function named
'true' is doable, although stupid).
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
