Executando arquivos-fonte em sistemas POSIX
No tutorial de execução de código Lua vimos que um arquivo-fonte pode ser executado, na linha de comando, informando primeiro o interpretador e em seguida o arquivo, como a seguir:
$ lua astronauta.lua
Em sistemas POSIX, temos uma outra opção, que consiste em adicionar ao arquivo, logo na primeira linha um apontamento para o interpretador, como no exemplo a seguir:
#!/usr/bin/lua
A linha shebang
Neste caso, estamos informando já no próprio arquivo o caminho completo
para o programa lua
, que no exemplo acima está dentro de
/usr/bin/
. Porém, isto pode variar, dependendo de
onde Lua foi instalado no sistema.
Quando nomes são modificados?
Adicionada essa linha, torne o arquivo executável:
$ chmod +x astronauta.lua
E agora você pode chamá-lo diretamente, como a seguir:
$ ./astronauta.lua
Estou na Lua
Sinto falta da Terra
Evidentemente, depender desse apontamento afeta a portabilidade do
programa, pois se mudar para um sistema onde a localização do interpretador
lua
for outra (ou o nome utilizado for outro), essa forma de
execução deixará de funcionar.
Uma mitigação comum para esse problema é usar o comando env
nessa primeira linha, que é uma forma indireta de chamar algum programa (como
lua
). Esse é um recurso bastante comum, pois no geral sistemas
POSIX possuem esse comando no mesmo local. Veja como ficaria:
#!/usr/bin/env lua
Caso não esteja em um sistema POSIX ou caso prefira executar o arquivo
chamando o programa lua
explicitamente, essa linha inicial não
surtirá nenhum efeito, então não há nenhum problema em mantê-la nesses
casos.
Ao longo dos tutoriais, omitirei essa instrução, mas apenas saiba que você poderá se deparar com ela em alguns arquivos Lua, especialmente em sistemas POSIX.