Problem with bash: alias command

Robert Nichols rnicholsNOSPAM at comcast.net
Mon Dec 21 02:40:09 UTC 2015


On 12/20/2015 10:30 AM, Jon LaBadie wrote:
> On Sun, Dec 20, 2015 at 01:42:30PM +0100, Joachim Backes wrote:
>> Hi all,
>>
>> Running F23, and my shell is /bin/bash.
>>
>> My problem: suppose you define an alias:
>>
>> alias x='echo PAR=$1'
>>
>> Now call the alias by:
>>
>> x 1
>>
>> Output: PAR= 1
>>
>> My question: why do I get the blank before the "1"?
>>
>
> aliases are not intended to be used with positional parameters.
> You will need to use functions to do that.
>
> As to the space, "x", not "x 1" gets replaced by the
> alias definition.  So
>
>    $ x 1
>
> becomes
>
>    $ echo PAR=$1 1
>
> As noted above, positional parameters to not exist for aliases
> so this becomes
>
>    $ echo PAR= 1

Actually, $1 does get expanded, but not until after the alias expansion.
Your current shell probably has no positional parameters, so $1 is NULL.
Try this:

     alias x='echo PAR=$1'
     set foobar         # Your current shell now has a parameter.
     echo $*            # See it.
     x 42

It's simple. Aliases do not interpret parameters. They just do a simple
string substitution of the defined string for the alias name. After
that substitution, the resulting command line is executed just as
though you typed it at the terminal.

-- 
Bob Nichols     "NOSPAM" is really part of my email address.
                 Do NOT delete it.



More information about the users mailing list