¿Hay alguna forma de redefinir una función bash en términos de su antigua definición? Por ejemplo, me gustaría agregar el siguiente bloque de código al preámbulo de la función 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
Actualmente está definido en /etc/profile.d/PackageKit.sh y proviene de scripts de inicio de bash.
De esa manera, puedo consultar el valor de una variable de entorno en el símbolo del sistema simplemente escribiendo el nombre de la variable (y siempre que no exista dicho comando con ese nombre). p.ej
user@hostname ~:$ LANG
LANG=en_AU.utf8
Sé que podría copiar y pegar la definición actual y agregar mis propios cambios ~/.bashrc
, pero estoy buscando una forma más elegante que implique la reutilización del código.
También se aprecian mejores formas de lograr mi objetivo o mejoras / extensiones de código.
eval
, puede usar indirección:local VAL=$(echo ${!1})