De acordo com este artigo, link , é possível modificar uma variável externa, dado seu nome, assim:
function myfunc()
{
local __resultvar=$1
local myresult='some value'
eval $__resultvar="'$myresult'"
}
myfunc result
echo $result
Agora, usando esse script e a pergunta original, escrevi duas funções, uma para adicionar antes do valor atual e outra para adicionar depois:
function add_directory_before()
{
local VAR=$1
local VALUE=$(eval echo \$${VAR})
if [ -d $2 ] && [[ ":$VALUE:" != *":$2:"* ]] ; then
eval $VAR=$2:$VALUE
fi
}
function add_directory_after()
{
local VAR=$1
local VALUE=$(eval echo \$${VAR})
if [ -d $2 ] && [[ ":$VALUE:" != *":$2:"* ]] ; then
eval $VAR=$2:$VALUE
fi
}
e o uso:
add_directory_after LD_LIBRARY_PATH /usr/local/lib64
ou
add_directory_before PATH $HOME/bin