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
Attachment:
signature.asc
Description: OpenPGP digital signature