Não é realmente uma questão de pedir cheques, simplesmente a ordem em que o shell configura as coisas. Redirecionamentos são configurados antes do comando ser executado; Portanto, no seu exemplo, o shell tenta abrir ~root/log
para anexar antes de tentar fazer algo que envolva ./write_file.py
. Como o arquivo de log não pode ser aberto, o redirecionamento falha e o shell para de processar a linha de comando nesse ponto.
Uma maneira de demonstrar isso é pegar um arquivo não executável e tentar executá-lo:
$ touch demo
$ ./demo
zsh: permission denied: ./demo
$ ./demo > ~root/log
zsh: permission denied: /root/log
Isso mostra que o shell nem sequer olha para ./demo
quando o redirecionamento não pode ser configurado.