Porque você não está usando bash
ou outro shell que entenda &>
. Observe a linha no topo dos seus scripts de shell:
#!/bin/sh
Esses scripts de shell serão executados com /bin/sh
. Em muitos sistemas que são ligados simbolicamente a bash, mas aparentemente não no seu. Provavelmente, é dash
ou alguma outra alternativa leve.
&
é usado para colocar comandos em segundo plano em scripts de shell. Seu shell está interpretando o &
in &>
com este significado. Então, em test-amp-gt.sh
:
#! /bin/sh
cat input.txt &> /dev/null && echo "DEBUG &>"
Primeiramente, ele inicia cat input.txt
no segundo plano, depois vê > /dev/null
, que aparentemente ignora, e executa echo DEBUG &>
, que é gerado como deveria. Seu script, em seguida, é concluído, o shell que você chamou test-amp-gt.sh
from imprime seu prompt e, em seguida, o cat
no plano de fundo gera input.txt
.