Se eu tiver ambos /usr/bin/perl
disponíveis /usr/local/bin/perl
em um sistema, qual devo usar?
Responder1
Depende: em alguns sistemas, por exemplo, empacotamento BSD, /usr/local/bin
pode ser o diretório onde os pacotes instalam os executáveis. Nesse caso, seria mais novo (e talvez melhor), mas /usr/bin/perl
seria mais estável.
Você pode usar perl -V
para ver qual tem um número de versão mais recente. Às vezes, o conteúdo de /usr/local/bin
(em sistemas multiusuário) não é realmente mais recente.
O compromisso usual é deixar o usuário decidir, usandoenv
a linha shebang/hashbang (mas, novamente, ocaminhopode env
variar de acordo com o sistema). A linha shebang refere-se à primeira linha de um script, que pode ser semelhante a uma das seguintes:
#!/usr/bin/perl
#!/usr/bin/perl -w
#!/usr/bin/env perl
Os dois primeiros especificam o diretório a partir do qual o Perl será executado. Como bônus, este formulário permite passar uma opção, por exemplo -w
(usada para ativar avisos). A última linha usa o env
programa para escolher a primeira ocorrência perl
pesquisando os diretórios listados na PATH
variável de ambiente do usuário.
Também é possível executar um script como este:
perl myscript
which (like env
) diz ao shell para escolher a primeira ocorrência perl
dos diretórios listados em PATH
.
Um explícito
./perl myscript
é claro que substitui o PATH
. Mas scripts com linhas Shebang são a maneira como a maioria das pessoas usa scripts Perl (as linhas únicas do Perl são uma questão diferente).
Leitura adicional:
- /usr/bin/env perl - consulta, referindo-se à linha shebang
- /usr/bin versus /usr/local/bin no Linux
- pacote(7), Sistema de pacotes FreeBSD com
/usr/local/bin
Responder2
para quem é isso? Se for só você, contanto que ambas as versões do Perl sejam novas o suficiente, isso não importa. É para um ambiente de trabalho? Nesse caso, verifique suas políticas de implantação, pois elas podem ter a resposta. Se for para distribuição ao público em geral, eu recomendaria variar com base no tipo de pacote, usar especificamente /usr/bin/perl para debs (de acordo com as diretrizes do debian) e rpms (já que a Red Hat proíbe especificamente a instalação de rpms em /usr/ local), mas /usr/bin/env perl para pacotes tar e shar, pois tem a melhor chance de funcionar em computadores unix aleatórios.