Una vez que gnome-terminal ha comenzado bash, está fuera del ciclo en lo que respecta a la ejecución del comando: solo administra la entrada y la salida. Por lo tanto, necesitará la cooperación de bash para ejecutar algo después de que ~/.bashrc
se haya cargado.
Primero, en muchos casos, no es necesario ejecutar comandos después ~/.bashrc
. Por ejemplo, simplemente se puede abrir una terminal en un directorio particular cd /foo/bar && gnome-terminal
. Puede establecer las variables de entorno de una manera similar: VAR=value gnome-terminal
. (Si ~/.bashrc
anula las variables de entorno, lo está haciendo mal: las definiciones de variables de entorno pertenecen~/.profile
)
Para ejecutar comandos en la terminal, pero antes ~/.bashrc
, puedes hacer
gnome-terminal -x sh -c 'command1; command2; exec bash'
Si desea usar varias pestañas, debe usarlas en -e
lugar de -x
. Gnome-terminal divide inútilmente el argumento de -e
en espacios en lugar de ejecutarlo a través de un shell. No obstante, puede escribir un comando de shell si se asegura de no incluir espacios en él. Sin embargo, al menos con gnome-terminal 2.26, puede usar pestañas (reemplazar <TAB>
por un carácter de pestaña 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'
Si necesita ejecutar comandos después ~/.bashrc
, haga que ejecute los comandos. Por ejemplo, incluya el siguiente código al final de ~/.bashrc
:
eval "$BASH_POST_RC"
Luego, para ejecutar un código después (realmente, al final de) su bashrc:
gnome-terminal -x sh -c BASH_POST_RC=\''command1; command2'\''; exec bash'
o (menos pesado en la cita)
BASH_POST_RC='command1; command2' gnome-terminal
Aunque no recomiendo hacerlo de esta manera, es posible que le interesen las técnicas mencionadas en
Cómo iniciar un terminal con cierto texto ya ingresado en la línea de comandos. .