Al trabajar con el time
comando, me encontré con una situación en la que debería usar el time
comando de tiempo GNU incorporado en lugar del externo /usr/bin/time
. Entonces, ¿cómo puedo hacer esto? Vi en alguna parte que usar enable
y / o command
ayudaría, pero no lo hicieron.
Este es un caso de uso:
watch "time ls"
que usa el /usr/bin/time
comando externo , que no quiero! Esto sucede cuando time
invoca la función bash interna cuando ejecuto time ls
en una terminal, así:
$ time ls
Tenga en cuenta que la solicitud exactamente opuesta ha sido respondida aquí:
Hay mucha diferencia con dos comandos. El interno time
es más preciso (que quiero), pero el comando externo tiene más opciones (que no necesito).
watch 'bash -c "builtin time ls"'
¿quizás?builtin time
debe hacer el truco.time
no está incorporadobash
, es una palabra reservada del idioma para que pueda programar las tuberías (comotime foo | bar
) o los comandos compuestos (comotime for i in...;done
)Respuestas:
Por defecto,
watch
se ejecuta el comando con/bin/sh -c '...'
lo que la salida se ve es cómo/bin/sh
interpreta eltime
comando. Al/bin/sh
parecer, no tiene un incorporadotime
.Para ejecutar el comando con un shell diferente, use la
-x
opción para deshacerse del valor predeterminado, luego agregue su propia invocación explícita del shell cuya construcción desea.No importa cómo se ejecute
watch
, el comando que está viendo no es un elemento secundario del shell que ejecutó elwatch
comando, por lo que la configuración del shell no es directamente relevante.fuente