|Anonymous | Login||2023-03-25 11:39 UTC|
|Main | My View | View Issues | Change Log | Docs|
|Viewing Issue Simple Details [ Jump to Notes ]||[ Issue History ] [ Print ]|
|ID||Category||Severity||Type||Date Submitted||Last Update|
|0001637||[1003.1(2016/18)/Issue7+TC2] Shell and Utilities||Objection||Clarification Requested||2023-02-27 17:17||2023-03-13 15:53|
|Priority||normal||Resolution||Accepted As Marked|
|Final Accepted Text||Note: 0006203|
|Summary||0001637: The command utility does not execute aliases|
The description of command with no options given states:
This suggests that
alias x=ls command x
should run the alias "x". No existing shell or implementation of the "command" utility I have found does this, but instead says that "x is not found" (in some form).
In D2.1, page 2553, line 83836, change
Yet another case where we would be far better off if the standard
had no aliases.
No surprise that no shells do what the text kind of looks like it
expects, as aliases would have been processed long before the
"command" command is executed - if one wanted to have "command"
apply to aliases (alias values) as well, one could do
alias command='command '
which would expand a following alias after command (as part of lexical
processing) if one appears there.
Without that, "command" is the word in the command word position, if that
is not an alias, no further words get checked to see if they are, until the
next command word position (which the following word is not, nor is it in
"exec word", xargs word, env word, ... though it can be in "eval word" as
that word is subject to lexical processing (to be tokenised).
The desired action is not adequate however, as it gives no clue what should
happen in the case in question. When the word after "command" is a function,
earlier text says what happens, but nothing does if it is an alias.
However, I agree that as long as aliases remain in POSIX, the text there
needs to be clearer.
I'd suggest something more like adding to the end of the sentence in
except that command_word does not appear in the command word
Note that command also suppresses reserved words, "command if ..." runs the
"if" command (from the filesystem, since command suppresses function lookups,
a function named "if" can't be run this way, even in shells that allow it to
$ cat $HOME/bin/if
echo If Only.
$ command if args are ignored in that script
Every shell I tested behaves like that, as they all should.
edited on: 2023-03-13 15:56
If the command_name is the same as the name of one of the special built-in utilities, the special properties in the enumerated list at the beginning of Section 2.14 (on page 2384) shall not occur. In every other respect, if command_name is not the name of a function, the effect of command (with no options) shall be the same as omitting command .add:
, except that command_name does not appear in the command word position in the command command, and consequently is not subject to alias substitution (see [xref to 2.3.1]) nor recognized as a reserved word (see [xref to 2.4]).
|2023-02-27 17:17||nick||New Issue|
|2023-02-27 17:17||nick||Name||=> Nick Stoughton|
|2023-02-27 17:17||nick||Organization||=> Logitech|
|2023-02-27 17:17||nick||Section||=> command|
|2023-02-27 17:17||nick||Page Number||=> 2596|
|2023-02-27 17:17||nick||Line Number||=> 84263-84266|
|2023-02-27 17:17||nick||Interp Status||=> ---|
|2023-02-27 17:17||nick||Category||System Interfaces => Shell and Utilities|
|2023-02-27 18:55||kre||Note Added: 0006180|
|2023-03-13 15:52||geoffclare||Note Added: 0006203|
|2023-03-13 15:53||geoffclare||Final Accepted Text||=> Note: 0006203|
|2023-03-13 15:53||geoffclare||Status||New => Resolved|
|2023-03-13 15:53||geoffclare||Resolution||Open => Accepted As Marked|
|2023-03-13 15:53||geoffclare||Tag Attached: tc3-2008|
|2023-03-13 15:56||geoffclare||Note Edited: 0006203|
|Mantis 1.1.6[^] Copyright © 2000 - 2008 Mantis Group|