executar script shell

1. executar script shell

Jorge Herrera
jcahr

(usa RedHat)

Enviado em 30/06/2012 - 22:09h

Boa noite

Já há muitos anos que faço pequenos shell para juntar variáveis de ambiente e os executo assim: ". ./env.sh" Assim mesmo, "ponto espaço ponto barra nome.sh".

Nem sempre está com a permissão certa para usar "sh env.sh" e ao final acaba virando hábito.

Recentemente um chefe me perguntou "qual a diferença entre rodar com ponto e com sh". É claro que passei vergonha por que não soube responder ...

Eu sei ( por que apanhei muito no passado ) que ao executar com ponto um shell que chama outros shells e se esses outros tiverem um exit, esse exit faz com que aborte todo !!!!
E por isso executo os meus "masters" com sh.

Então as perguntas são duas, na verdade:

1) Qual a diferença entre rodar com ponto e com sh e
2) Por que ao rodar com ponto, um exit "secundario" faz com que aborte tudo !

Obrigado.




  


2. Rodar com ponto e com sh

Sergio Napolitano
napolitano

(usa Debian)

Enviado em 30/06/2012 - 23:43h

Somente será executado ./seu_script se o mesmo tiver permissão de executar. Você pode definir esta permissão ou tirar com o comando chmod:

# chmod +x seu_script
Adiciona permissão de executar

# chmod -x seu_script
Remove permissão de executar

Cerquilha (#) foi usado somente para indicar que deve ser feito com privilegios de root.

Com o comando sh, você indica para o sistema como deve ser aberto aquele arquivo. Ou seja, você também executa mas o sistema não "sabe" que aquele arquivo é um script ou programa, ou ainda se deve ser aberto em um shell ou editor de texto até você indicar pois o mesmo não tem permissão de execução nem outro atributo que caracterize isto.
Observe que no linux a extensão do arquivo tem fins organizacionais apenas.

Sobre o "exit", especifique com um exemplo pois não ficou claro o que vc quis dizer. Exit dentro do script??

Sobre shell, leia:
http://www.afms.com.br/shell/?page=

Pesquise no google tbm.

Sugiro que vc crie uma maquina virtual para estudar isso (caso tenha interesse). Faça um snapshot da mesma e a cada novo teste que vc for fazer com script e depois manda bala. Terminou e não deu certo, reverta o snapshot.
Volta como era antes de executar o teste.

Abraço e espero ter ajudado.




3. Re: executar script shell

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 01/07/2012 - 00:00h

Não necessariamente precisa desse ponto, ele representa o diretório corrente.

Experimente executar assim:
/home/seu_usuario/script.sh

Verás que vai executar normalmente.


Quando usamos assim:

sh script.sh
ou
bash script.sh

Estamos forçando o interpretador de comandos atual do terminal, no caso pelo indicado antes do script (sh, bash, zsh, ....)

Quando fazemos simplesmente:
/caminho/ate/script/script.sh
ou
./script.sh

Será usado o interpretador padrão ou o informado no inicio do script ( #!/bin/bash )



4. Re: executar script shell

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 01/07/2012 - 00:06h

O exit, ainda não tinha visto esse comportamento, uso o BASH e nele tanto faz a forma como execute o exit sempre fecha a execução do script.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts