Une fois que gnome-terminal a démarré bash, il n’a plus rien à faire en ce qui concerne l’exécution des commandes: il ne gère que les entrées et les sorties. Vous aurez donc besoin de la coopération de bash pour exécuter quelque chose après ~/.bashrc
son chargement.
Premièrement, dans de nombreux cas, vous n'avez pas réellement besoin d'exécuter des commandes après ~/.bashrc
. Par exemple, l’ouverture d’un terminal dans un répertoire particulier peut simplement être réalisée cd /foo/bar && gnome-terminal
. Vous pouvez définir des variables d'environnement d'une manière similaire: VAR=value gnome-terminal
. (Si vous ~/.bashrc
remplacez les variables d'environnement, vous vous y trompez: les définitions de variable d'environnement appartiennent à~/.profile
)
Pour exécuter des commandes dans le terminal, mais avant ~/.bashrc
, vous pouvez faire
gnome-terminal -x sh -c 'command1; command2; exec bash'
Si vous voulez utiliser plusieurs onglets, vous devez utiliser à la -e
place de -x
. Gnome-terminal divise inutilement l'argument de -e
at au lieu de l'exécuter à travers un shell. Néanmoins, vous pouvez écrire une commande shell si vous vous assurez de ne pas y inclure d'espaces. Au moins avec gnome-terminal 2.26, vous pouvez utiliser des tabulations (toutefois, remplacez-les <TAB>
par un caractère de tabulation littéral):
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 vous devez exécuter des commandes après ~/.bashrc
, faites- le exécuter. Par exemple, incluez le code suivant à la fin de ~/.bashrc
:
eval "$BASH_POST_RC"
Ensuite, pour lancer un peu de code après (vraiment, à la fin de) votre bashrc:
gnome-terminal -x sh -c BASH_POST_RC=\''command1; command2'\''; exec bash'
ou (moins lourd sur la citation)
BASH_POST_RC='command1; command2' gnome-terminal
Bien que je ne recommande pas particulièrement de le faire de cette façon, vous pouvez être intéressé par les techniques mentionnées dans
Comment démarrer un terminal avec du texte déjà saisi sur la ligne de commande? .