From: Eric Blake <eblake@redhat.com>
To: Jan Verbeek <ring@openmailbox.org>, dash@vger.kernel.org
Subject: Re: [BUG] Illegal function names are accepted after being used as aliases
Date: Tue, 23 Feb 2016 11:40:48 -0700 [thread overview]
Message-ID: <56CCA7B0.5080507@redhat.com> (raw)
In-Reply-To: <56CCA25E.5020809@openmailbox.org>
[-- Attachment #1: Type: text/plain, Size: 1323 bytes --]
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 #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
next prev parent reply other threads:[~2016-02-23 18:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-23 18:18 [BUG] Illegal function names are accepted after being used as aliases Jan Verbeek
2016-02-23 18:40 ` Eric Blake [this message]
2016-02-23 18:44 ` Harald van Dijk
2016-02-23 18:58 ` Eric Blake
2016-02-23 19:21 ` Harald van Dijk
2016-02-23 19:33 ` Eric Blake
2016-02-23 21:00 ` Harald van Dijk
2016-02-23 21:49 ` Eric Blake
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56CCA7B0.5080507@redhat.com \
--to=eblake@redhat.com \
--cc=dash@vger.kernel.org \
--cc=ring@openmailbox.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.