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

Reply via email to