Cristiano, O ponto equivale ao comando 'source'. Ele executa o programa passado por parâmetro no ambiente da shell atual, sem criar uma sub shell.
Exemplo: $ cat exemplo.sh VAR="Olá mundo" $ echo $VAR $ chmod +x exemplo.sh $ ./exemplo.sh #exemplo.sh definiu um valor para VAR em uma sub shell $ echo $VAR #portanto, ela não existe mais nesse ponto $ source exemplo.sh # exemplo.sh foi executado no ambiente da shell atual $ echo $VAR # portanto, VAR passa a ter o valor que foi definido para ela por exemplo.sh Olá mundo Quanto ao uso do 'source' ser um problema de segurança, lembre-se que executar qualquer coisa através dele não te dá mais permissões do que as que você já tinha. Por exemplo, vou tentar remover o arquivo /var/log/messages, que só dá permissões de escrita para o root: $ cat exemplo2.sh rm -f /var/log/messages $ . exemplo2.sh # usei ponto no lugar de 'source' para você ver que são equivalentes rm: imposível remover `/var/log/messages': Permissão negada Saudações, -- Guilherme Magalhães Gall 2008/8/10 Cristiano Ferrari <[EMAIL PROTECTED]>: > Salve honoráveis, boa noite. > > Sempre que escrevo um código em um script que possa ser reutilizado em > outros (tipo funções, por exemplo) ou que possa compartilhar > parâmetros com outros scripts, como váriáveis, eu costumo por estes > trechos em arquivos separados e incorporá-los usando o comando: '. > /fullpath/arquivo.sh' no código do script (meio sem saber extamente o > porquê do '. ' antes do endereço do arquivo). > > Eu sempre dei, previamente, permissão de execução para este arquivo de > parâmetros/funções, mas hoje, ao esquecer de dar permissão a um novo > arquivo destes, percebi que ela não é necessária (!!!) para que este > arquivo seja executado. > > Isso nunca havia me ocorrido, mas me chamou a atenção para um detalhe: > este tipo de comportamento não compromete a segurança? > > Afinal, se eu tentar chamar o arquivo diretamente (ex: > '/fullpath/parametros.sh'), seja via outro script ou diretamente no > prompt, o shell nega a execução, mas se chamá-lo usando '. > /fullpath/parametros.sh' ele é executado, inclusive no prompt (e eu > nem preciso ser root para isso). > > Talvez eu esteja confundindo conceitos ou usando o '. /arquivo' > indevidamente. > > Então, alguém, por favor, poderia me explicar por que eu consigo > executar um arquivo sem permissões de execução apenas acrescentando um > '. ' antes dele? > > Abraço > > Cristiano Ferrari > > > ------------------------------------ > > --------------------------------------------------------------------- > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > --------------------------------------------------------------------- > Sair da lista: [EMAIL PROTECTED] > --------------------------------------------------------------------- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > --------------------------------------------------------------------- > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > >
