mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
Fix unsetting aliases in subshells
Aliases can now be correctly unset within subshell environments (such as ( ... ), $(command substitutions), etc), as well as non-subshell "shared" command substitutions (${ ...; }). Before, attempts to unset aliases within these were silently ignored. Prior discussion: https://github.com/att/ast/issues/108 Subshell alias trees are only referenced in a few places in the code, *and* have always been broken, so this commit gets rid of the whole notion of a subshell alias tree. Instead, there is now just one flat alias tree, and subshells fork into a separate process when aliases are set or unset within them. It is not really conceivable that this could be a performance-sensitive operation, or even a common one, so this is a clean fix with no downside. src/cmd/ksh93/include/defs.h: - Remove sh_subaliastree() definition. src/cmd/ksh93/sh/subshell.c: - Remove salias element (pointer to subshell alias tree) from subshell struct. - Remove sh_subaliastree() function. - sh_subshell(): Remove alias subshell tree cleanup. src/cmd/ksh93/bltins/typeset.c: - b_alias(): If in subshell, fork before setting alias. - b_unalias(): If in subshell, fork before unsetting alias. - unall(): Remove sh_subaliastree() call. src/cmd/ksh93/sh/name.c: - nv_open(): Remove sh_subaliastree() call. src/cmd/ksh93/tests/subshell.sh: - Add regression tests for unsetting or redefining aliases within subshells. (cherry picked from commit 12a15605b9521a2564a6e657905705a060e89095)
This commit is contained in:
parent
047cb3303c
commit
ec888867fd
6 changed files with 36 additions and 32 deletions
3
NEWS
3
NEWS
|
@ -18,6 +18,9 @@ Any uppercase BUG_* names are modernish shell bug IDs.
|
|||
This now correctly lists your directory and then prints "ls executed",
|
||||
instead of printing "ls executed" twice.
|
||||
|
||||
- Fix a similar bug with aliases. These can now be correctly unset
|
||||
in subshell environments.
|
||||
|
||||
2020-05-21:
|
||||
|
||||
- Fix truncating of files with the combined redirections '<>;file' and
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue