Shell-Ausführung: Zeit vs. / usr / bin / time

9

Was passiert, wenn bash / zsh Folgendes tut:

%Vor%

Warum macht es einen Unterschied, wie ich die Zeit nutze und warum versucht zsh, -l ??

auszuführen?

Seltsamerweise sagt zsh

%Vor%

Während Bash nicht:

%Vor%     
emish 07.10.2013, 23:19
quelle

3 Antworten

9

time ist sowohl in zsh als auch in bash integriert. % Co_de% ist jedoch nur in zsh integriert. In bash, wenn Sie which verwenden, wird which ausgeführt, was keine Ahnung von Shell-Einbauten hat.

Also solltest du in der bash:

verwenden %Vor%

Der Grund dafür, dass /usr/bin/which nicht funktioniert, ist, dass die time -l ... -Syntax das time -Flag nicht enthält.

In beiden Fällen ist es nicht richtig zu sagen, dass -l eine eingebaute Funktion ist. Ein "reserviertes Wort" oder "Shell-Schlüsselwort" zu nennen ist genauer, weil es für eine gesamte Pipeline gilt; Es kann nicht als Funktion oder externer Befehl implementiert werden. In diesem Sinne ähnelt es anderen syntaktischen Elementen wie time und if .

    
rici 08.10.2013, 00:34
quelle
2

Eine andere Möglichkeit zu ermitteln, ob ein Befehl ein bash-Befehl ist, ist der Befehl help builtin. Der Nebeneffekt besteht darin, Informationen über diesen Befehl (und die unterstützten Befehlszeilenargumente) zu erhalten.

%Vor%

Für nicht eingebaute Befehle sagt help , dass es nichts davon weiß.

%Vor%     
Alexis Wilke 19.07.2016 21:33
quelle
0

time ist eine eingebaute Funktion in zsh. Es ist nicht in der Bash. Wenn Sie die / usr / bin / time-Version verwenden möchten, müssen Sie den vollständigen Pfad angeben, wenn Sie zsh verwenden.

Es ist auch möglich, dieses Verhalten mit dem Befehl "disable -r" in zsh zu deaktivieren.

    
Dean Povey 07.10.2013 23:41
quelle

Tags und Links