Esiste un modo per ridefinire una funzione bash in termini di vecchia definizione? Ad esempio, vorrei aggiungere il seguente blocco di codice al preambolo della funzione 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
È attualmente definito in /etc/profile.d/PackageKit.sh e proveniente da script di avvio bash.
In questo modo posso interrogare il valore di una variabile d'ambiente al prompt dei comandi semplicemente digitando il nome della variabile (e purché non esista tale comando con quel nome). per esempio
user@hostname ~:$ LANG
LANG=en_AU.utf8
So che potrei semplicemente copiare e incollare la definizione corrente e aggiungere le mie modifiche ~/.bashrc
, ma sto cercando un modo più elegante che implichi il riutilizzo del codice.
Sono anche apprezzati modi migliori per raggiungere il mio obiettivo o miglioramenti / estensioni del codice.
eval
, è possibile utilizzare l'indirizzamento indiretto:local VAL=$(echo ${!1})