Trabalhando com o time
comando, me deparei com uma situação em que eu deveria usar o time
comando de tempo GNU interno e não externo /usr/bin/time
. Então, como posso fazer isso? Vi em algum lugar que o uso enable
e / ou command
ajudaria, mas eles não ajudaram.
Este é um caso de uso:
watch "time ls"
que usa o /usr/bin/time
comando externo , que eu não quero! Isso acontece quando time
invoca a função bash interna quando eu corro time ls
em um terminal, assim:
$ time ls
Observe que a solicitação exatamente oposta foi respondida aqui:
Há muita diferença com dois comandos. O interno time
é mais preciso (o que eu quero), mas o comando externo tem mais opções (o que eu não preciso).
watch 'bash -c "builtin time ls"'
possivelmente?builtin time
deve fazer o truque.time
não é um embutido nobash
, é uma palavra reservada da língua para que você possa tempo pipelines (comotime foo | bar
) ou comandos compostos (comotime for i in...;done
)Respostas:
Por padrão,
watch
executa seu comando com,/bin/sh -c '...'
portanto, a saída que você vê é como/bin/sh
interpreta otime
comando. Seu/bin/sh
aparentemente não tem um builtintime
.Para executar o comando com um shell diferente, use a
-x
opção para se livrar do padrão e, em seguida, adicione sua própria chamada explícita do shell cujo built-in você deseja.Não importa como você executa
watch
, o comando que você está assistindo não é filho do shell que executou owatch
comando, de modo que as configurações do shell não são diretamente relevantes.fonte