Utilisation de la command "time" embeddede dans bash plutôt que la command externe

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:

  • Faire bash utiliser la command externe `time` plutôt que shell embedded

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.