time shell cmd unterschied?



  • kann mir das mal einer erklären, bitte 😕

    #!/bin/bash
    
    time ./main
    
    ausgabe:
    
    real	0m0.006s
    user	0m0.008s
    sys	0m0.000s
    
    #!/bin/sh
    
    time ./main
    
    ausgabe:
    
    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 keyword
    

    time 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 0swaps
    

    Dann 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 keyword
    

    time kann kein builtin sein, weil es sich anders verhält.

    $ time echo hi &> /dev/null
    
    real	0m0.000s
    user	0m0.000s
    sys	0m0.000s
    

    Wä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.


Anmelden zum Antworten