Você não pode escrever #!$(which foo)
porque essa linha é interpretada pelo kernel, que não entende sintaxes complexas como $()
.
O kernel não procura o comando na variável de ambiente PATH
. É por isso que você precisa especificar o caminho completo para o comando.
O uso de /usr/bin/env
é um hack inteligente usado para pesquisar o comando no PATH
. Mesmo se houver um programa /usr/bin/python3
, você pode, por exemplo, ter instalado uma versão mais recente do Python em um caminho diferente, por exemplo, no seu diretório pessoal.