Como iniciar o bash shell no ubuntu - altere o diretório, abra as abas, execute os comandos

2

Tenho certeza de que isso não deve ser tão difícil quanto eu estou achando!

Quando eu entro em minha máquina, eu quero que ele inicie um shell bash, em um determinado diretório, abra e nomeie algumas abas e inicie um processo em cada uma delas.

Eu acho que se eu colocar

cd ~/xxx/xxx/xxx

em .bashrc e depois autoinicializar o shell bash com algo como

gnome-terminal --tab -e "bash -c 'rails s'" --tab -e "bash -c 'spork'" --tab -e "bash -c 'autotest'" --tab -e "bash -c 'rails c'" --tab -e 'tail -f log/development.log'

deve funcionar

Não - eu recebo "Ocorreu um erro ao criar o processo filho para este terminal Falha ao executar o processo filho 'rails' (Nenhum tal arquivo ...

o rails está no caminho - nos diretórios raiz e de destino, e o caminho completo não ajuda - a janela do terminal não abre.

Atualização: A razão pela qual isso não funciona como esperado é que o bashrc não altera o diretório de trabalho até que os comandos para iniciar o processo tenham sido executados. (eu posso ver isso se eu fizer tab -e 'pwd')

Então, a questão é realmente, como posso alterar o diretório e, em seguida, iniciar os processos em execução?

    
por chrispanda 19.07.2011 / 11:11

2 respostas

3

Existe uma solução muito boa em:

link

Citado no link:

Here is a nice trick we worked out at Superuser

  1. Add a eval "$BASH_POST_RC" to the end of your .bashrc

  2. Set the BASH_POST_RC environment variable for each tab to that command you like to execute, e.g.: gnome-terminal --working-directory="/home/zardoz/projects/my_rails_app" --tab -e 'bash -c "export BASH_POST_RC=\"rails server\"; exec bash"' --tab -e 'bash -c "export BASH_POST_RC=\"autotest\"; exec bash"'

@Gilles: Thanks for that solution!

Eu criei o seguinte script bash usando essa ideia.

gnome-terminal --working-directory="/home/USER/rails_projects/PROJECT" --tab --title=Terminal --profile=Rails --tab --profile=Rails --title=Console -e 'bash -c "export BASH_POST_RC=\"rails console\"; exec bash"' --tab --profile=Rails --title=Guard -e 'bash -c "export BASH_POST_RC=\"guard\"; exec bash"' --tab --profile=Rails --title=Server -e 'bash -c "export BASH_POST_RC=\"rails server\"; exec bash"' --tab --profile=Rails --title=Tail -e 'bash -c "export BASH_POST_RC=\"tail -f log/development.log\"; exec bash"'

    
por 11.09.2011 / 08:23
2

.bashrc não é invocado quando bash chama com o parâmetro -c .

Em vez disso, você poderia agrupar as chamadas gnome-terminal no script que faz cd primeiro. Alguns assim:

#!/bin/bash
cd ~/xxx/xxx/xxx
gnome-terminal --tab -e "bash -c 'rails s'" --tab -e "bash -c 'spork'" --tab -e "bash -c 'autotest'" --tab -e "bash -c 'rails c'" --tab -e 'tail -f log/development.log'
    
por 19.07.2011 / 12:34

Tags