time shell cmd unterschied?
-
kann mir das mal einer erklären, bitte

#!/bin/bash time ./mainausgabe: real 0m0.006s user 0m0.008s sys 0m0.000s#!/bin/sh time ./mainausgabe: 0.00user 0.00system 0:00.00elapsed 133%CPU (0avgtext+0avgdata 3296maxresident)k 0inputs+0outputs (0major+245minor)pagefaults 0swaps
-
In Bash:
$ type time time is a shell keywordtime ist bei bash kein Programm, sondern ein keyword. Daher hängt es von der Shell ab, was time macht. /bin/sh ist bei dir scheinbar nicht bash.
-
Christoph schrieb:
/bin/sh ist bei dir scheinbar nicht bash.
nö, verlinkt auf dash. dass es ein keyword ist, erklärt natürlich einiges

dachte, time sei ein programm

-
time ist so ein bisschen ein Programm
. Also unter bash gibt es das als builtin (so nennt sich das - nicht keyword). Unter dash wohl nicht. Bei mir (Fedora) gibt es ein /usr/bin/time. Wenn ich allerdings einfach nur time aufrufe, kommt das builtin zum tragen. Ich kann aber auch den vollen Pfad angeben:$ time echo Hallo Hallo real 0m0.000s user 0m0.000s sys 0m0.000s$ /usr/bin/time echo Hallo Hallo 0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 600maxresident)k 0inputs+0outputs (0major+185minor)pagefaults 0swapsDann sieht es so aus, wie bei Deiner dash-Variante.
-
tntnet schrieb:
time ist so ein bisschen ein Programm
. Also unter bash gibt es das als builtin (so nennt sich das - nicht keyword).Nein, time ist in bash kein builtin, sondern tatsächlich ein keyword.
Vergleiche echo mit time:
$ type echo echo is a shell builtin $ type time time is a shell keywordtime kann kein builtin sein, weil es sich anders verhält.
$ time echo hi &> /dev/null real 0m0.000s user 0m0.000s sys 0m0.000sWäre time ein builtin, müsste die Umleitung von stdout und stderr nach /dev/null auch die Ausgabe von time unterbinden. time kann seine Ausgabe aber loswerden (und zwar auf dem alten stderr), also kann time kein builtin sein.