lua lacuna.lua
env lua lacuna.lua

Sim, ambos os comandos funcionavam. NO entanto, não podia chamar ./lacuna.lua.
#!/usr/bin/lua - interpretador inválido.
#!/usr/bin/env lua - interpretador inválido.

O que poderia ser? O mistério se desfez quando, ao invés de reutilizar o mesmo arquivo, criei um completamente novo. Por que havia falha? Porque o último caracter era uma quebra linha Windows. Aquele script foi criado durante as férias, na casa de minha mãe. E por lá, a máquina é Windows. Para estar certo de que o problema era mesmo esse, voltei ao lacuna.lua e o salvei, mudando a quebra de linha de Windows para Unix. Pronto, tudo está resolvido.

Mas que coisa extraordinária. Não seria mal que o Linux reconhecesse como válida as duas quebras e pouparia um bocado de dor de cabeça. Observe-se que, independentemente da quebra de linha, o script é executado normalmente em um ou outro caso quando a linha de comando é "lua lacuna.lua". A quebra de linha só fez diferença quando tentei executar o script diretamente pelo Bash.

Quando a estrutura de pastas do Linux, confesso que ainda me atrapalho um pouco. Segundo entendo, em /usr/bin, guardo executáveis binários. Em /usr/share, guardo executáveis do tipo script. Em /usr/lib, guardo binários do tipo biblioteca. Temos a mesma estrutura reproduzida em /usr/local. A bem dizer, pensava que este "local" referia-se a coisinhas produzidas pelo próprio usuário.

O meu /opt tem apenas um programa: o Postgresql. Creio que o Postgresql e o Dropbox foram os dois únicos programas que não baixei de repositórios. Imaginei, portanto, que este teria sido o motivo pelo qual o Postgresql lá se instalou. O porquê o Dropbox não obedeceu o mesmo critério... Bom, suponho que estas regras não sejam lá muito firmes e que alguns desenvolvedores não acham mal adotar outros procedimentos.

Windows e Linux tem filosofias diferentes. . NO Windows, em geral, os programas criam uma pasta em que binários, scripts, documentação e tudo mais são colocados. O Linux, ao que me parece, prefere criar uma estrutura particular a cada diferente tipo de item. Então, posso cogitar, visto que não conheço do assunto, que se utilizar /opt, devo concentrar tudo em uma pasta, como faz o Windows. Se, ao contrário, desejar utilizar o padrão que encontro mais vezes no Linux, então, teria:

/usr/share/scripts/lacuna ou /usr/share/local/scripts/lacuna
/usr/bin/lacuna - O link simbólico.

E no outro caso:
/opt/scripts/lacuna - A pasta do programa.
/usr/bin/lacuna - O link simbólico.

Para mim, por enquanto, não fará muita diferença porque, afinal, não tenho muita diversidade de tipos de arquivos.

Em 13-11-2011 17:07, Andre Cavalcante escreveu:
Luciano.

Esqueça tudo o que você fez e vamos por partes ok?

/usr/bin/env é um comando do linux que executa um comando em um ambiente
modificado.

/usr/bin/lua é o comando do linux que ativa o interpretador lua

/usr/bin/env lua simplesmente executa o interpretador lua em um ambiente
modificado.

Para scripts lua, você deve fazer:

$ nano teste.lua

#!/usr/bin/lua

print('teste')

Para fazer o teste:

$ lua ./teste.lua

ou

$ chmod +x teste.lua
$ ./teste.lua

Para scripts lua em um ambiente modificado:

$ env ./teste.lua

Para instalar seu programa, crie um script bash para copiar os arquivos
para as pastas corretas, e depois crie links simbólicos em /usr/bin para os
respectivos arquivos executáveis que criar. Isso evita as complicações do
PATH.

Uma alternativa é criar uma pasta bin no seu home:

mkdir $HOME/bin

Essa pasta, se existir, deverá ser colocada no seu PATH, automaticamente.
Se não, é porque você (ou algum programa mal comportado) já deve ter mexido
o seu .profile. Para inserir, basta adicionar:

echo "PATH=$HOME/bin:$PATH">>  .profile

Você terá que fazer logout e login novamente.

Então você pode trabalhar tranquilamente na sua área pessoal e depois que
tudo estiver bom aí sim você instala em /usr/share, /usr/lib. Como esse seu
programa é de terceiros, ele deveria ir para /opt/pasta_do_programa e
somente os links em /usr/bin.

Testa aí e dá o retorno.

Abraços

André Cavalcante
Caparica, Portugal
Ubuntu User number # 24370
Quer saber sobre Open Source Software? http://sobreoss.blogspot.com
Quer saber mais sobre Espiritismo? http://sobreespiritismo.blogspot.com

Atenção: Este e-mail pode conter anexos no formato ODF (Open Document
Format)/ABNT (extensões odt, ods, odp, odb, odg). Antes de pedir os anexos
em outro formato, você pode instalar gratuita e livremente o BrOffice (
http://www.broffice.org) ou o seguinte Plugin para Microsoft Office (
http://odf-converter.sourceforge.net/index.html<http://www.sun.com/software/star/odf_plugin/get.jsp>
).


--
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

Lista de discussão Ubuntu Brasil
Histórico, descadastramento e outras opções:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-br

Responder a