acabei de tropeçar
exec 1> >(logger -s -t $(basename $0)) 2>&1
que é usado para redirecionar a saída do script atual para o logger do sistema (caso você nunca tenha visto isso, mas esteja interessado, confira https://stackoverflow.com/questions/8888251/understanding-bash-exec-12- comando para ampliar seu conhecimento do shell).
Eu estou querendo saber por que o 1>
é necessário. Parece necessário porque exec >(logger -s -t test) 2>&1
falha devido a
bash: /dev/fd/63: Permission denied
bash: exec: /dev/fd/63: cannot execute: Permission denied
Omitir 1>
é no entanto o que eu faria intuitivamente porque exec >[some redirection target]
já deve ser suficiente para o redirecionamento de acordo com a pergunta vinculada acima. 2>&1
em seguida, redireciona o stderr para stdout como de costume.
Estou usando o bash 4.4.19.
É necessário (o extra
>
, não o1
,1>
poderia ser simplesmente escrito>
). A>(...)
substituição do processo se expandirá para algo como/dev/fd/13
(um nome de arquivo) e, em seguida>
, redirecionará a saída padrão para ele. Daí> >(...)
.