En travaillant avec la command de time
, je suis tombé sur une situation où je devrais utiliser le time embedded plutôt que la command de time GNU externe /usr/bin/time
. Alors, comment puis-je faire cela? J'ai vu quelque part qu'utiliser enable
et / ou command
aiderait, mais ils ne l'ont pas fait.
Ceci est un cas d'utilisation:
watch "time ls"
qui utilise la command externe /usr/bin/time
, que je ne veux pas! Cela se produit lorsque le time
appelle la fonction interne bash lorsque time ls
le time ls
sur un terminal, comme ceci:
$ time ls
Veuillez noter que la réponse exacte a été trouvée ici:
Il y a beaucoup de différence avec deux commands. Le time
interne est plus précis (ce que je veux), mais la command externe a plus d'options (dont je n'ai pas besoin).
Par défaut, watch
exécute votre command avec /bin/sh -c '...'
afin que la sortie que vous voyez soit comment /bin/sh
interprète la command time
. Votre /bin/sh
n'a apparemment pas de time
embedded.
Pour exécuter la command avec un shell différent, utilisez l'option -x
pour supprimer la valeur par défaut, puis ajoutez votre propre invocation explicite du shell dont vous voulez build l'architecture.
watch -x bash -c 'time ls' watch -x zsh -c 'time ls'
Peu importe la façon dont vous exécutez watch
, la command que vous regardez n'est pas un enfant du shell exécutant la command watch
, de sorte que les parameters du shell ne sont pas directement pertinents.