Wie verhindere ich, dass Bash einen eingebauten Befehl verwendet?
Ich versuche, ein Skript zu reparieren, das @ verwendecho
, das ist der eingebaute Befehl anstelle des Befehls, wie kann ich das verhindern?
Ich weiß, ich kann/bin/echo
, um die Verwendung des zu erzwingen, aber ich möchte den Pfad nicht fest codieren (aus Gründen der Portabilität).
Ich dachte mit etwas wie:
$ECHO=`which echo`
$ECHO -e "text\nhere"
aberwhich echo
gibt Folgendes zurück: "echo: eingebauter Shell-Befehl".
Ich habe am Ende ein @ definieecho
-Funktion, die @ verwendenv
wie @Kenster empfiehlt. Auf diese Weise muss ich die Aufrufe nicht ändern, damit sie im Skript wiedergegeben werden.
echo() {
env echo $*
}
# the function is called before the built-in command.
echo -en "text\nhere"