UNIX redirecionando para um arquivo sem gravar o tratamento do sistema de permissão

1

Estou aprendendo o ambiente UNIX e tenho uma dúvida. Quando se trata de redirecionar um erro std para um arquivo, o que acontece se o arquivo para o qual redirecionamos tiver permissões de escrita negadas ao usuário?

Exemplo:

./command >file 2>&1
./command 2>&1 >file

O que acontece na primeira instância com a mensagem de erro? Será descartado automaticamente? Eu recebo o mesmo erro para ambas as linhas, essa permissão é negada, mas desde que o sistema lê da esquerda para a direita, qual é a diferença entre o modo como é tratado?

Quaisquer links para tutoriais que entram no mecanismo por trás disso seriam úteis, até agora só posso encontrar informações sobre como ele lida com isso se tivermos permissões de escrita.

    
por ayz649 07.03.2017 / 08:08

1 resposta

1

Resposta curta: o comando não será executado.

Explicação: o redirecionamento é baseado em descritores de arquivos, que precisam ser criados com a chamada "open ()", antes de executar o processo.

Meu bash simplesmente rejeitou:

$ sleep 1 2>&1 > /nonwritable
-bash: /nonwritable: Permission denied

Então você vê, há uma proteção para a maioria das conchas.

    
por 07.03.2017 / 09:27