Bei der Arbeit mit dem time
Befehl stieß ich auf eine Situation, in der ich den eingebauten time
Befehl anstelle des externen GNU-Zeitbefehls verwenden sollte /usr/bin/time
. Also, wie kann ich das machen? Ich habe irgendwo gesehen, dass die Verwendung enable
und / oder command
würde helfen, aber sie haben nicht.
Dies ist ein Anwendungsfall:
watch "time ls"
das benutzt den externen /usr/bin/time
befehl, den ich nicht will! Dies passiert, wenn time
ich die interne Bash-Funktion time ls
auf einem Terminal wie folgt ausführe :
$ time ls
Bitte beachten Sie, dass die genau entgegengesetzte Anfrage hier beantwortet wurde:
Bei zwei Befehlen gibt es einen großen Unterschied. Das interne time
ist genauer (was ich will), aber der externe Befehl hat mehr Optionen (die ich nicht brauche).
watch 'bash -c "builtin time ls"'
vielleicht?builtin time
sollte den trick machen.time
ist kein eingebautesbash
, es ist ein reserviertes Wort der Sprache, so dass Sie Pipelines (wietime foo | bar
) oder zusammengesetzte Befehle (wietime for i in...;done
)Antworten:
Standardmäßig wird
watch
Ihr Befehl mit/bin/sh -c '...'
der Ausgabe ausgeführt, die Sie sehen, wie/bin/sh
dertime
Befehl interpretiert wird . Ihr/bin/sh
habt anscheinend kein eingebautestime
.Um den Befehl mit einer anderen Shell auszuführen, verwenden Sie die
-x
Wenn Sie ausführen möchten Option, um die Standard-Shell zu entfernen, und fügen Sie dann Ihren eigenen expliziten Aufruf der Shell hinzu, deren integrierte Shell Sie verwenden möchten.Unabhängig davon, wie Sie
watch
den Befehl ausführen , ist der Befehl, den Sie überwachen, kein untergeordnetes Element der Shell, die denwatch
Befehl ausgeführt hat, sodass die Einstellungen der Shell nicht direkt relevant sind.quelle