Existe alguma maneira de redefinir uma função bash em termos de sua antiga definição? Por exemplo, eu gostaria de adicionar o seguinte bloco de código ao preâmbulo da função command_not_found_handle ()
,
# Check if $1 is instead a bash variable and print value if it is
local VAL=$(eval echo \"\$$1\")
if [ -n "$VAL" ] && [ $# -eq 1 ]; then
echo "$1=$VAL"
return $?
fi
Atualmente, ele é definido em /etc/profile.d/PackageKit.sh e originado por scripts de inicialização do bash.
Dessa forma, posso consultar o valor de uma variável de ambiente no prompt de comando digitando simplesmente o nome da variável (e desde que não exista esse comando com esse nome). por exemplo
user@hostname ~:$ LANG
LANG=en_AU.utf8
Eu sei que poderia copiar e colar a definição atual e adicionar minhas próprias alterações ~/.bashrc
, mas estou procurando uma maneira mais elegante que envolva a reutilização de código.
Melhores maneiras de alcançar meu objetivo ou melhorias / extensões de código também são apreciadas.
eval
, você pode usar o indireção:local VAL=$(echo ${!1})