Re: dash should not propagate aliases to subshells

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 3, 2023, at 5:54 AM, Дилян Палаузов wrote:
> https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_03_01 
> says:
>
> 2.3.1 Alias Substitution
>
> When used as specified by this volume of POSIX.1-2017, alias definitions 
> shall not be inherited by separate invocations of the shell or by the 
> utility execution environments invoked by the shell.
>
>
> So a subshell shall have no knowledge about the aliases from the 
> supershell

You are mistaken; subshells are not "separate invocations".  See
section 2.12:

	A subshell environment shall be created as a duplicate of
	the shell environment, except that signal traps that are
	not being ignored shall be set to the default action.

> These programs
>
> #!/bin/bash
> alias wslpath=echo
> find `wslpath /tmp`
>
> and
>
> #!/bin/dash
> alias wslpath=echo
> find `wslpath /tmp`
>
> produce different results (bash 5.2.15-3.fc38,  dash 0.5.12-1.fc38) when 
> executed on a WSL2 system.  The former program shows the content of the 
> current directory, the latter program shows the content of /tmp .

That is because aliases are not expanded at all in noninteractive
bash "native mode" shells.  If you were to run bash as "sh" or with
its "--posix" option, then you would see the same behavior as with
dash.

-- 
vq




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux