Isso porque env está pesquisando python no seu PATH , não em qualquer shell incorporado, ou alias ou função. Como você definiu python como python3 como um alias, env não o encontrará, pesquisará PATH e resolverá python a /usr/bin/python (que é python2 ). / p>
Você pode verificar todos os locais disponíveis do executável python , em bash , do:
type -a python
Você está sem sorte se quiser usar um alias no shebang, pois, por definição, shebang precisa ser um caminho completo para o executável do interpretador, que o env deve resolver python para quando você usa /usr/bin/env python . Para interpretar o script usando python3 use o shebang:
#!/usr/bin/env python3