This week I tried to come up with a portable way to determine whether
a symbol is the name of a function, to replace a method depending on
the output of 'command -V' which, according to the POSIX standard cannot
be relied upon.
The method I used relies checks if the symbol still refers to a command
after it has been undefined as a function. This works when the `unset -f`
happens at the same shell level as where the functions was defined:
$ f(){ :; }
$ (command -v f)
f
$ unset -f f
$ (command -v f)
$
So far so good, this is what I would expect.
However, if I combine both `unset -f f` with `command -v f` in a single
subshell, the function is not removed in ksh93:
$ f(){ :; }
$ (command -v f)
f
$ (unset -f f; command -v f)
f
$
During testing, this works as expected for bash, dash, and mksh, but not in
ubuntu 14.04 ksh93 u+ 2012-08-01.
Is this a bug?
Cheers,
Henk
_______________________________________________
ast-users mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-users