Lu-a-Bá - O bê-a-bá de Lua para a comunidade lusófona

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.