[Ubuntu-BR] Execução de um script em /usr/local/share
Luciano de Souza
luchyanus em gmail.com
Segunda Novembro 14 11:38:37 UTC 2011
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>
> ).
More information about the ubuntu-br
mailing list