Comment exécuter automatiquement les commandes sur gnome-terminal après la connexion?

11

Après chaque connexion, il y a certaines commandes que j'exécute sur des onglets spécifiques de gnome-terminal. C'est un processus fastidieux, alors cela peut-il être fait automatiquement?

tshepang
la source

Réponses:

5

Oui, il existe un moyen. Vous devez dire à gnome-terminal de lancer des onglets avec certains profils; ces profils doivent être configurés pour démarrer un shell avec les commandes souhaitées.

Tout d'abord, vous devez créer un script (ou une icône de lanceur) qui démarrera gnome-terminal --tab-with-profile=Dev. "Dev" est le nom d'un profil que vous allez créer, alors remplacez-le par ce que vous voulez qu'il soit. Vous pouvez également spécifier autant de --tab-with-profiles que vous le souhaitez: cela ouvrira un onglet pour chacun.

Maintenant, vous avez besoin du profil que vous venez de référencer. Ceci est créé en ouvrant gnome-terminalet en trouvant Edit->Profiles...dans le menu. Créez un nouveau profil et donnez-lui le nom que vous avez spécifié à l'étape précédente. Ensuite, vous devez définir ses préférences. Mettez en surbrillance le profil nouvellement créé et cliquez sur le bouton Modifier. Lorsque la boîte de dialogue Préférences de profil est ouverte, activez l'onglet "Titre et commande", cochez "Exécuter une commande personnalisée ..." et dans la zone de texte associée, placez sh -c "ENV=$HOME/.dev_profile sh". Bien sûr, vous pouvez définir ENV sur n'importe quel chemin d'accès, tant que vous êtes cohérent à l'étape suivante. Cela démarre sh et sh exécutera toutes les commandes$HOME/.dev_profile

Ensuite, vous devez créer ce fichier de profil shell. Modifiez donc $ HOME / .dev_profile (ou le fichier que vous avez spécifié à l'étape précédente). Placez toutes les commandes que vous voulez là-dedans; ils seront exécutés au démarrage du shell. Traitez cela comme vous le feriez avec un .bashrc - cela le remplacera. Selon la configuration de votre .bashrc, vous souhaiterez peut-être source $HOME/.bashrcdans le profil copier toutes les fonctionnalités de votre profil sh normal.

Shawn J. Goff
la source
3
Soit dit en passant, je recommanderais fortement tmux ou GNU Screen à la place. Ce sont des multiplexeurs de terminaux qui sont un peu plus faciles à configurer pour ce genre de choses, et vous pouvez les utiliser via une connexion ssh. Le seul inconvénient est qu'ils n'ont pas d'onglets sur lesquels vous pouvez cliquer, mais vous pouvez obtenir une liste de menus de fenêtres ou de sessions que vous pouvez parcourir de haut en bas et passer à une. Ils ont également d'autres options sophistiquées comme l'écran partagé, les moniteurs d'activité / d'inactivité et la possibilité de garder la session ouverte sans terminal connecté.
Shawn J. Goff du
1
L'écran a des avantages, mais il a aussi des inconvénients. La première est que le retour à la sortie précédente est plus difficile qu'avec la plupart des émulateurs de terminaux X. Un autre est que vous ne pouvez pas facilement afficher deux fenêtres de la même session d'écran en même temps (ce n'est pas un problème si vous utilisez des sessions d'écran distinctes, mais vous devez ensuite basculer entre elles, qui séparent les onglets ou les fenêtres de l'émulateur de terminal rend plus facile).
Gilles 'SO- arrête d'être méchant'
@Giles: Ou l'écran est plus facile à faire défiler: cela dépend de la façon dont vous aimez travailler. Je ne sais pas ce que vous voulez dire au sujet des deux fenêtres - je le fais tout le temps: ^ a S ^ a <tab> ^ ac
Shawn J. Goff
2
oui c'est beaucoup plus simple que de double-cliquer sur la barre d'onglets
Falmarri
2
@Falmarri: en fait c'est ça. Je touche la souris assez rarement pour que le capteur optique s'éteigne, je dois donc l'agiter pendant environ 1,5 seconde avant de pouvoir cliquer sur quoi que ce soit. (Sans parler, cela signifie que je dois retirer ma main du clavier et devoir à nouveau trouver la position d'origine sur le clavier.)
Shawn J. Goff
7

Vous pouvez démarrer plusieurs commandes sur la même ligne de commande gnome-terminal en spécifiant l' --tab-with-profileoption plusieurs fois, suivie à chaque fois par une seule -espécifiant la commande à exécuter dans cet onglet. Vous pouvez également utiliser --window-with-profilepour avoir plusieurs fenêtres. Par exemple, la commande suivante démarre deux fenêtres avec deux onglets chacune; la première fenêtre exécute bash dans chaque onglet, définissant la variable d'environnement TABsur 1 ou 2; la deuxième fenêtre s'exécute htopdans un onglet et iotopdans l'autre onglet. L' shinvocation explicite , avec une citation correcte, est nécessaire pour une raison quelconque.

gnome-terminal --tab-with-profile="Default" -e 'sh -c '\''export TAB=1; exec bash'\' \
               --tab-with-profile="Default" -e 'sh -c '\''export TAB=2; exec bash'\' \
               --window-with-profile="Default" -e 'htop' \
               --tab-with-profile="Default" -e 'iotop'

Si vous voulez qu'une commande s'exécute lorsque vous vous connectez, placez-la dans un script shell (par exemple ~/bin/my_gnome_login_commands, et enregistrez-la dans «Système / Préférences / Applications de démarrage» dans le menu Gnome. Sinon, créez un fichier ~/.config/autostart/my_commands.desktopcontenant

[Desktop Entry]
Type=Application
Exec=/home/tshepang/bin/my_gnome_login_commands
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true

(Vous devez utiliser le chemin complet de votre répertoire personnel sur la Exec=ligne, vous ne pouvez pas l'utiliser ~.)

(Cette réponse a été testée avec Gnome 2.30 sur Ubuntu 10.04. Comme Gnome rompt parfois la compatibilité, elle peut ou non s'appliquer à d'autres versions.)

Gilles 'SO- arrête d'être méchant'
la source
0

Je vois ici beaucoup de choses. Vous n'avez probablement besoin de rien de tout cela.

Ce sont les étapes que j'ai faites dans mon Oracle 5.9 Linux:

  1. Créez une icône de terminal gnome sur votre bureau.
  2. Ouvrez votre terminal gnome.
  3. Allez dans Edition -> Profils.
  4. Sélectionnez votre profil par défaut et cliquez sur Modifier.
  5. Allez dans l'onglet "Titre et commande".
  6. Sélectionnez l'option "Exécuter la commande en tant que shell de connexion".
  7. Cliquez sur le bouton Fermer.

Ça a marché pour moi. Bien sûr, dans mon cas, je veux juste exécuter .profile pour configurer mon environnement de terminal.

CesarDBA
la source