Eu nunca escrevi um script shell antes, mas eu tenho um aplicativo web que precisa de um monte de coisas rodando de uma vez, e é irritante ter que abrir cada aba, mudar diretórios, iniciar meus processos, etc.
Estou baseando meu arquivo no mostrado em esta questão .
O primeiro trecho (a chamada para as redis, que faz o cd
por conta própria) funciona, mais ou menos - ele abre uma única guia terminal e roda redis. (Eu apenas o separei para fins de teste; de preferência, seria parte da matriz e todas as guias seriam abertas em uma única janela de terminal.)
O segundo pedaço é o lugar onde estou com problemas. Aparentemente cd
não funciona em scripts de shell , mas esse link em particular está muito acima da minha cabeça, e eu não entendo como implementar nenhuma das soluções mostradas lá. O erro específico que recebo é:
bash: cd ~/phoenix/RenderService; npm start: No such file or directory
As guias que se abrem através do loop têm prompts no diretório redis-stable
:
Vejaoquequeroqueaconteçaquandoeuexecutaroscript:
- Abraumajaneladeterminalcomtrêsguias,usandooperfilPhoenix.
- Aprimeiraguiadevemudarparaodiretório
redis-stable
e,emseguida,executarsrc/redis-server
- Asegundaguiadevemudarpara
phoenix/PhoenixServices
diretório,emseguida,executenpmstart
- Aterceiraguiadevemudarpara
phoenix/RenderService
diretório,emseguida,executenpmstart
Ajaneladoterminaletodasasguiasdevempermanecerabertasapósaexecuçãodoscomandos.
Aquiestáomeucódigoexistente:
#!/bin/bash#runredis,PhoenixServices,andRenderServicecd~/redis-stablegnome-terminal--tab-with-profile=Phoenix--title=Redis-e'bash-c"src/redis-server; exec bash"'
tab=" --tab-with-profile=Phoenix"
options=(--tab --title=Terminal)
cmds[1]="'cd ~/phoenix/PhoenixServices; npm start'"
titles[1]="PhoenixServices"
cmds[2]="'cd ~/phoenix/RenderService; npm start'"
titles[2]="RenderService"
for i in 1 2; do
options+=($tab --title="${titles[i]}" -e "bash -c \"${cmds[i]} ; exec bash\"" )
done
gnome-terminal "${options[@]}"
exit 0
Alguém pode ajudar um novato pobre a sair?