* dash should not propagate aliases to subshells
@ 2023-10-03 9:54 Дилян Палаузов
2023-10-03 19:36 ` Lawrence Velázquez
0 siblings, 1 reply; 2+ messages in thread
From: Дилян Палаузов @ 2023-10-03 9:54 UTC (permalink / raw)
To: dash, 1053394
To: 1053394@bugs.debian.org, dash@vger.kernel.org
Hello,
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, and backticks start a subshell.
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 .
Moreover, I filled this initially towards the Debian Bug tracking system
(cf. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1053394) , and
was then told to check http://gondor.apana.org.au/~herbert/dash/ .
Please include in the repository
https://git.kernel.org/pub/scm/utils/dash/dash.git links to
http://gondor.apana.org.au/~herbert/dash/ and dash@vger.kernel.org , for
instance in src/dash.1, so that it is documented where to report
problems in dash.
Kind regards
Dilyan
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: dash should not propagate aliases to subshells
2023-10-03 9:54 dash should not propagate aliases to subshells Дилян Палаузов
@ 2023-10-03 19:36 ` Lawrence Velázquez
0 siblings, 0 replies; 2+ messages in thread
From: Lawrence Velázquez @ 2023-10-03 19:36 UTC (permalink / raw)
To: Дилян Палаузов
Cc: dash, 1053394
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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-10-03 19:37 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-03 9:54 dash should not propagate aliases to subshells Дилян Палаузов
2023-10-03 19:36 ` Lawrence Velázquez
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox