É muito provável que seja um erro de digitação para 2>&1
; >foo 2>&1
é muito comum em crontabs como uma maneira simples de manter a saída e erro de cronjobs (veja SO , U & L , AU , ...).
Observe que:
- fd 1 aqui foi aberto para gravação (
>/stopout
, etc. equivalente a1>/stopout
) - se você usa
2>&1
ou2<&1
, o fd 2 obtémdup2
(pelo menos no Linux, mas presumivelmente em outras plataformas também) para fd 1, então ele pode ser usado da mesma maneira que o fd 1 pode ser.- Isso não significa que os dados gravados em fd 1 serão enviados para fd 2 como entrada, mas que os fds 1 e 2 apontam para a mesma coisa.
- então, escrever para o fd 2 não falhará e será enviado para
/stopout
da mesma forma que os dados gravados no fd 1.
No entanto, se o fd 1 foi originalmente aberto para leitura, a gravação falhará:
$ strace -e write bash -c 'echo bar 1<foo 2<&1'
write(1, "bar\n", 4) = -1 EBADF (Bad file descriptor)
write(2, "bash: line 0: echo: write error:"..., 53) = -1 EBADF (Bad file descriptor)
+++ exited with 1 +++