Eu estava escrevendo um Makefile (no Ubuntu 20.04, se for relevante) e notei um comportamento interessante com o echo
. Pegue este Makefile simples:
test.txt:
@echo -e 'hello\nworld'
@echo -e 'hello\nworld' > test.txt
Quando eu executo make
, eu esperaria ver a mesma coisa no stdout que no test.txt, mas na verdade não vejo. Eu recebo isso no stdout:
hello
world
mas isso em test.txt:
-e hello
world
Enquanto isso, se eu remover -e
de ambas as linhas no Makefile, recebo isso no stdout:
hello\nworld
e isso em test.txt:
hello
world
Isso me fez pensar se echo
detecta o redirecionamento e se comporta de maneira diferente, mas não quando eu apenas o executo manualmente no shell /bin/echo -e 'hello\nworld' > test.txt
(que produz hello
e world
em linhas separadas, como eu normalmente esperaria). Cheguei até a confirmar que o Makefile está usando /bin/echo em vez de um shell embutido adicionando uma @echo --version
linha.
O que está acontecendo aqui?