Ich versuche ein Skript zu reparieren, das echo
verwendet, das den eingebauten Befehl anstelle des Befehls verwendet, wie kann ich das verhindern?Wie verhindere ich, dass bash einen eingebauten Befehl verwendet?
Ich weiß, dass ich /bin/echo
tun kann, um die Verwendung dieser zu erzwingen, aber ich möchte den Pfad (für Portabilität) nicht fest codieren.
dachte ich, etwas wie mit:
$ECHO=`which echo`
$ECHO -e "text\nhere"
aber which echo
kehrt: "echo: Shell integrierten Befehl".
Ich habe eine echo
Funktion am Ende definieren, die env
als @Kenster empfiehlt verwendet. Auf diese Weise muss ich die Aufrufe von echo im Skript nicht ändern.
echo() {
env echo $*
}
# the function is called before the built-in command.
echo -en "text\nhere"
'der eingebaute Befehl anstelle des Befehls' WTF? – ForceBru
Warum nicht gleich etwas anderes nennen? –
@El_Hoy: Nur neugierig, wie ist das interne Echo in Ihrem Szenario schlechter als "/ bin/echo"? –