slackjeff
(usa Slackware)
Enviado em 04/07/2018 - 17:13h
Mauriciodez escreveu:
slackjeff escreveu:
Nessa chamada ./SCRIPT é usado um processo filho/subshell, fica mais lento!
Seria melhor usar uma chamada como se fosse biblioteca mesmo, exemplo:
#!/usr/bin/env bash
#===BIBLIOTECA====
. /home/slackjeff/remover.sh # Não abre subshell
. /home/slackjeff/atualizar.sh # Não abre subshell
./home/slackjeff/lalala.sh # Abre subshell, mais lento!
Se vc exemplificar sem explicar fica confuso pra mim ..
a diferença entre lento e não lento é só 1 espaço depois do ponto ????
isso influi ??? ( #!/usr/bin/env bash )
outra coisa ... a principio não rola de fazer tipo biblioteca, pois esses script funcionam só sacou ... o grosso é um script de automação de pós instalação, então por exemplo ele chama o script "Instala_firefox.sh" por exemplo ... aí o firefox será instalado, mas o script "Instala_firefox.sh", não tem só o comando de instalar, ele tem vários IFS ( por exemplo ) que detectam se é a 1ª instalaçao, se já foi baixado, tem a parte da interatividade , que me pergunta se quer "instalar ou remover", manter ou não as configurações do usuário ... emfim ... ele é um script ( como 90% deles ) autônomo .
Então a maioria dos scripts eu só chamo no ponto onde vai ser necessário.
------------------------------------------| Linux User #621728 |-----------------------------------------
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"
------------------------------------------| Linux User #621728 |-----------------------------------------
Quando chamamos ./Script.sh esse
./ é um nick/alias para o shell padrão do seu sistema fim...
O
. ou
source chama um script no mesmo processo, são diferentes do primeiro exemplo acima onde se usa o ./script.sh...
. Script.sh #Chama um script/biblioteca no mesmo processo
source Script.sh # Alias do . chama o script/biblioteca no mesmo processo.
Então no caso acho que seria melhor você por esse seu script todo em uma função, chamar como uma biblioteca e fazer a chamada da função quando necessaria que executar um segundo script dentro do principal! alem de mais lento nao fica profissa...
Exemplo de uma biblioteca.
# BIBLIOTECA/Função atualizar mirrors do sistema.
# Nota, não há necessidade de usar shebang!
# essa biblioteca sera salva como atualizar_repo.sh
function atualizar_repositorio()
{
printf "Olá, vamos atualizar sua lista de repositorio\n"
apt update
return 0
}
#!/bin/bash
# Programa principal.
#======BIBLIOTECA============|
# Chamada da biblioteca para atualizar repositorio
# está biblioteca será carregada juntamente deste programa
# não abrindo uma subshell/subprocesso.
. /DIRETORIO/DA/BIBLIOTECA/atualizar_repo.sh
# fazendo alguma conferencia se usuario é root...
# se é vamos chamar a funcão para atualizar o repositorio.
if [ "$UID" = "0" ]; then
atualizar_repositorio # Chamada da função/biblioteca
else
printf "Parece que você não está como root!\nSó lamento...\n"
exit 1
fi
Assim sera mais rapido que criar um script e chamar com ./script.sh ou bash script.sh
Entendeu?
THE MAGIC SHELL PROGRAMMER.
Slackware user since ~2008
Meu canal no youtube:
https://www.youtube.com/SlackJeff
Meu Site:
http://www.slackjeff.com.br/
Meus Programas estão aqui:
https://notabug.org/jeffersonrocha
Meu PODCAST:
http://podcast.slackjeff.com.br/