Gibt es eine Möglichkeit, eine Bash-Funktion im Sinne ihrer alten Definition neu zu definieren? Zum Beispiel möchte ich der Präambel der Funktion den folgenden Codeblock hinzufügen 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
Es ist derzeit in /etc/profile.d/PackageKit.sh definiert und wird von Bash-Startskripten bereitgestellt.
Auf diese Weise kann ich den Wert einer Umgebungsvariablen an der Eingabeaufforderung abfragen, indem ich einfach den Variablennamen eingebe (sofern kein solcher Befehl mit diesem Namen vorhanden ist). z.B
user@hostname ~:$ LANG
LANG=en_AU.utf8
Ich weiß, dass ich die aktuelle Definition einfach kopieren und einfügen und meine eigenen Änderungen hinzufügen kann ~/.bashrc
, aber ich suche nach einer eleganteren Methode, die die Wiederverwendung von Code beinhaltet.
Bessere Möglichkeiten zur Erreichung meines Ziels oder Verbesserungen / Erweiterungen des Codes werden ebenfalls geschätzt.
eval
können Sie die Indirektion verwenden:local VAL=$(echo ${!1})