2
respostas

Setando caminhos diferentes para execução de scripts shell

Boa tarde pessoal, sou iniciante em SHELL

Estou criando alguns scripts SHELL para facilitar meu trabalho diário.

Então eu tenho meu .bash_aliases, observem que para o mesmo script trabalhar em mais de uma maquina com estrutura de pastas diferentes eu faço essa configuração de caminhos antes:

########## CAMIMHOS DE ACORDO COM O USERS ##########
usuario=$USER
case $usuario in
          root|nomemaquina1)
            caminho=/home/nomemaquina1/Projetos
            #echo $caminho
            ;;
          nomemaquina2)
            caminho=/Users/nomemaquina2/desktop/docker
            #echo $caminho
            ;;
esac
########## DOCKER ##########
alias irun='sudo bash "$caminho"/scripts/start-containers.sh'

Com isso a hora que eu executar $ irun vai executar meu script.

Até ai tudo bem, tudo funcionando, mas o problema que peço ajuda é para resolver a seguinte questão:

Todo script que eu criar eu preciso também usar essa variável $caminho, uma solução que eu achei foi passar esse código que determina o caminho de acordo com o usuário, mas isso não me parece certo pois em cada script eu preciso replicar o mesmo código. Para evitar ficar replicando o mesmo código eu pensei em colocar esse código dos caminhos em um arquivo chamado congif.sh:

######## DEFININDO OS CAMINHOS DE ACORDO COM O USER ########
usuario=$USER
case $usuario in
          root|nomemaquina1)
            caminho=/home/nomemaquina1/Projetos
            #echo $caminho
            ;;
          nomemaquina2)
            caminho=/Users/nomemaquina2/desktop/docker
            #echo $caminho
            ;;
esac

Depois chamar esse arquivo usando assim:

source config.sh

Porém eu esbarro no mesmo problema, em cada maquina o caminho para chegar nesse arquivo é diferente então eu preciso da variável $caminho para montar:

source "$caminho"/scripts/config.sh

Mas é claro que isso não vai funcionar sem eu ter o mesmo bloco de código que seta a variável $caminho. Dai retornei ao problema original rss.

Alguém tem uma ideia melhor de como resolver isso?

2 respostas

Nenhuma resposta dos instrutores?

Oi João, tudo bem? Acho que você precisa definir um padrão para encontrar o arquivo de config. Assim como outras ferramentas usam, por exemplo o bash sempre vai procurar na home do usuário. Se não encontrar, você deve imprimir um erro dizendo que falta o ter esse arquivo de configuração.

Se você não usa uma estratégia assim, vai ficar impossível mapear todas as possibilidades de estruturas de página.

Acredito que todos os programas de scripts que usamos passa por algo assim e a solução mais simples e direta parece ser essa.

Você pode colocar também o caminho do arquivo config como dependente de uma variável de ambiente, semelhante ao que acontece com o Java, etc.