Depois que o gnome-terminal inicia o bash, ele fica fora de loop no que diz respeito à execução de comandos: ele gerencia apenas a entrada e a saída. Portanto, você precisará da cooperação do bash para executar algo após o ~/.bashrc
carregamento.
Primeiro, em muitos casos, você não precisa executar comandos depois ~/.bashrc
. Por exemplo, a abertura de um terminal em um diretório específico pode ser feita simplesmente com cd /foo/bar && gnome-terminal
. Você pode definir variáveis de ambiente de forma semelhante: VAR=value gnome-terminal
. (Se você ~/.bashrc
substituir as variáveis de ambiente, estará fazendo errado: as definições das variáveis de ambiente pertencem~/.profile
)
Para executar comandos no terminal, mas antes ~/.bashrc
, você pode fazer
gnome-terminal -x sh -c 'command1; command2; exec bash'
Se você quiser usar várias guias, precisará usar em -e
vez de -x
. O Gnome-terminal, sem ajuda, divide o argumento de -e
em espaços, em vez de executá-lo através de um shell. No entanto, você pode escrever um comando do shell se não incluir espaços nele. Pelo menos com o gnome-terminal 2.26, você pode usar tabulações (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 depois ~/.bashrc
, faça -o executar os comandos. Por exemplo, inclua o seguinte código no final de ~/.bashrc
:
eval "$BASH_POST_RC"
Depois, execute um código após (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 particularmente não recomendo fazê-lo dessa maneira, você pode estar interessado nas técnicas mencionadas em
Como iniciar um terminal com determinado texto já inserido na linha de comando? .