ksh
na verdade implementa um recurso interessante chamado discipline functions
que basicamente permite que você inclua retornos de chamada para definir ou fazer referência a uma variável:
$ cat t.sh
#!/bin/ksh
PATH=
function PATH.set
{
echo "new PATH in ${.sh.file}:${.sh.lineno}:"
echo " old = [${PATH}]"
echo " new = [${.sh.value}]"
}
PATH=/bin:/usr/bin:/sbin:/usr/sbin
PATH=$PATH:$PATH
.
$ ./t.sh
new PATH in t.sh:12:
old = []
new = [/bin:/usr/bin:/sbin:/usr/sbin]
new PATH in t.sh:13:
old = [/bin:/usr/bin:/sbin:/usr/sbin]
new = [/bin:/usr/bin:/sbin:/usr/sbin:/bin:/usr/bin:/sbin:/usr/sbin]
Da mesma forma, PATH.get
seria executado toda vez que $PATH
fosse referenciado.
Infelizmente, como parece que você não pode exportar funções em ksh93
, isso restringiria o retorno de chamada ao script atual, limitando sua utilidade geral.