Martijn Dekker
2016-10-17 19:40:09 UTC
I know there are no active developers at this point, but here's one for
the archives in case there are active developers in the future.
The ${.sh.subshell} (subshell level) variable is broken:
case $(echo ${.sh.subshell} 1>&2
echo ${.sh.subshell} 1>&2
echo ${.sh.subshell}) in
1) echo ok ;;
esac
This should output '1' twice and then 'ok'. Instead it outputs '1' and
then '0'.
This means ${.sh.subshell} is reset after the first access, so only the
first access is correct.
Interestingly this all works fine on ancient ksh93, at least "Version M
1993-12-28 r" as installed on sdf-eu.org. But versions as of at least
2010 and later all have this problem.
Since ksh93 uniquely does subshells without forking, the canonical
method involving the comparison of $$ with $(exec sh -c 'echo $PPID')
doesn't work either, as subshells don't get separate PIDs.
As far as I can tell, that leaves ksh93 without *any* reliable way of
figuring out if you're in a subshell.
I need this capability for my shell library to support ksh93. If anyone
can think of any workarounds, please let me know.
Many thanks,
- Martijn
the archives in case there are active developers in the future.
The ${.sh.subshell} (subshell level) variable is broken:
case $(echo ${.sh.subshell} 1>&2
echo ${.sh.subshell} 1>&2
echo ${.sh.subshell}) in
1) echo ok ;;
esac
This should output '1' twice and then 'ok'. Instead it outputs '1' and
then '0'.
This means ${.sh.subshell} is reset after the first access, so only the
first access is correct.
Interestingly this all works fine on ancient ksh93, at least "Version M
1993-12-28 r" as installed on sdf-eu.org. But versions as of at least
2010 and later all have this problem.
Since ksh93 uniquely does subshells without forking, the canonical
method involving the comparison of $$ with $(exec sh -c 'echo $PPID')
doesn't work either, as subshells don't get separate PIDs.
As far as I can tell, that leaves ksh93 without *any* reliable way of
figuring out if you're in a subshell.
I need this capability for my shell library to support ksh93. If anyone
can think of any workarounds, please let me know.
Many thanks,
- Martijn