#1053394 dash should not propagate aliases to subshells

Package:
dash
Source:
dash
Description:
POSIX-compliant shell
Submitter:
Дилян Палаузов
Date:
2023-10-03 19:39:04 UTC
Severity:
normal
Tags:
#1053394#5
Date:
2023-10-03 08:53:18 UTC
From:
To:
Hello,

I use actually dash on Fedora version 0.5.12-1.fc38, but the only way to
report bugs towards dash seems to be the Debian bug tracker system.

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) when executed on a WSL2
system.  The former program shows the content of the current directory,
the latter program shows the content of /tmp .

Kind regards
   Dilyan

#1053394#10
Date:
2023-10-03 09:23:48 UTC
From:
To:
Hello,

If would be great if you submitted this issue to them.

Thanks!

#1053394#17
Date:
2023-10-03 09:54:59 UTC
From:
To:
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

#1053394#22
Date:
2023-10-03 19:36:03 UTC
From:
To:
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.

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.