C Variantes do shell e variantes do Bourne Shell [duplicado]

1

Qual é a diferença entre: C Variantes Shell e variantes Bourne Shell?

Eu preciso instalar um software científico, durante a instalação devo escrever

./configure >& config.out & ## C Shell variants

./configure > config.out 2>&1 & ## Bourne Shell variants

apenas para ter uma ideia sobre isso.

    
por EsH2O 24.07.2016 / 11:37

1 resposta

3
O revestimento de

C (por exemplo, csh , tcsh ) e o invólucro Bourne (por exemplo, sh , bash ) são duas famílias de casca. Estes dois têm diferenças nas sintaxes e na implementação de várias operações.

Os exemplos que você mostrou são como essas duas famílias manipulam o redirecionamento de descritores de arquivos. Ambos os comandos estão redirecionando STDERR (descritor de arquivo 2) para STDOUT (descritor de arquivo 1), enviando STDOUT para o arquivo config.out , portanto, todos os STDOUT e STDERR estão sendo redirecionados para o arquivo. E também enviando o comando para background por & no final.

Historicamente, o shell C usa >& para redirecionar ambos STDOUT e STDERR de uma só vez enquanto o Bourne shell usa dois redirecionamentos para fazer isso, primeiro enviando STDOUT para o arquivo e enviando STDERR para o local STDOUT.

Note que, a discussão acima é verdadeira para todos os shell C e uma família de shells shell Bourne para portabilidade. Mas hoje em dia muitas coisas mudaram e esses tipos de coisas são modificados por causa da eficiência em implementações mais recentes de vários shells, por exemplo, em bash (ou zsh / ksh ) que herdou do shell Bourne, você pode faça o acima com &> :

./configure &> config.out & 

Como você pode ver, na verdade é o contrário da sintaxe csh , >& .

    
por heemayl 24.07.2016 / 12:05