Uma vez que o gnome-terminal tenha iniciado o bash, ele está fora do loop no que diz respeito à execução do comando: ele apenas gerencia a entrada e a saída. Então, você precisará da cooperação do bash para executar algo após ~/.bashrc
ter sido carregado.
Primeiro, em muitos casos, você não precisa executar comandos após ~/.bashrc
. Por exemplo, abrir um terminal em um diretório específico pode ser feito simplesmente com cd /foo/bar && gnome-terminal
. Você pode definir variáveis de ambiente de maneira semelhante: VAR=value gnome-terminal
. (Se o seu ~/.bashrc
substituir as variáveis de ambiente, você está fazendo errado: definições de variáveis de ambiente pertencem a ~/.profile
)
Para executar comandos no terminal, mas antes de ~/.bashrc
, você pode fazer
gnome-terminal -x sh -c 'command1; command2; exec bash'
Se você quiser usar várias guias, precisará usar -e
em vez de -x
. O Gnome-terminal divide o argumento de -e
em espaços, sem ajuda, em vez de executá-lo através de um shell. No entanto, você pode escrever um comando shell se tiver certeza de não incluir espaços nele. Pelo menos com o gnome-terminal 2.26, você pode usar abas, embora (substitua <TAB>
por um caractere de tabulação literal):
gnome-terminal -e 'sh -c command1;command2;exec<TAB>bash'
gnome-terminal --tab -e 'sh -c command1;<TAB>exec<TAB>bash' \
--tab -e 'sh -c command2;<TAB>exec<TAB>bash'
Se você precisar executar comandos após ~/.bashrc
, faça ele executar os comandos. Por exemplo, inclua o seguinte código no final de ~/.bashrc
:
eval "$BASH_POST_RC"
Em seguida, execute um código depois (realmente, no final) do seu bashrc:
gnome-terminal -x sh -c BASH_POST_RC=\''command1; command2'\''; exec bash'
ou (menos pesado na citação)
BASH_POST_RC='command1; command2' gnome-terminal
Embora eu não recomende particularmente fazê-lo desta maneira, você pode estar interessado nas técnicas mencionadas em Como iniciar um terminal com algum texto já inserido na linha de comando? .