Get function name in KornShell script

If you define the function with the function keyword, then $0 is the function name:

$ function foo {
>     echo "$0"
> }
$ foo
foo

(Tested in pdksh.)


[...] what are the main pros/cons of using keyword function?

Main pro is that "typeset myvar=abc" inside the function is now a local variable, with no possible side effects outside the function. This makes KSH noticeably safer for large shell scripts. Main con is, perhaps, the non-POSIX syntax.


Use the ksh "function foo ..." form:

$ cat foo1
#!/bin/ksh
foo3() { echo "\$0=$0"; }
function foo2 { echo "\$0=$0"; }
foo2
foo3
$ ./foo1
$0=foo2
$0=./foo1