#! / usr / bin / env foo #! vs / usr / bin / foo [duplicado]

0

Qual dos formulários acima é "melhor" para executar scripts bash, python etc.? Por que não posso fazer #!$(which foo) ? É neccecery para especificar o caminho completo para env ? Eu entendo de esta resposta, que o caminho /usr/bin/env está definido em pedra para todos * nix-es, muito mais de /usr/bin/python3 por exemplo. É assim?

    
por Vorac 19.11.2017 / 11:49

1 resposta

1

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.

    
por 19.11.2017 / 11:56