Je souhaite ouvrir Terminator dans un répertoire spécifique, par exemple /home/downloads/
, puis exécuter une commande.
J'ai fait la première partie par cette "commande personnalisée": cd /home/downloads; bash
Terminator démarre maintenant dans ce répertoire, mais comment puis-je faire la deuxième partie?
Maintenant que terminator a été démarré dans le répertoire des téléchargements, je veux exécuter n'importe quelle commande que je veux, par exemple ls
ou rake
commande ou utiliser certains alias comme commandes. Comment puis-je faire ceci?
J'appuie sur le bouton droit de la souris dans le terminateur et je choisis Paramètres, puis Disposition, puis j'ajoute du texte dans la section des commandes personnalisées.
Toutes ces opérations doivent être effectuées automatiquement après le démarrage du terminateur.
Réponses:
Exécutez en
cd /home/downloads; exec bash
tant que commande personnalisée. (Leexec
module intégré garantit que cebash
sera un enfant de l'émulateur de terminal; sans lui, il pourrait finir par être un petit-enfant.) Vous pouvez exécuterterminator -e 'cd /home/downloads; exec bash'
la ligne de commande.Vous ne pouvez pas utiliser d'alias dans la commande personnalisée car vos alias sont définis par
~/.bashrc
, mais ce fichier n'est chargé que par des shells interactifs, pas par le shell de script qui est utilisé ici comme colle entre l'émulateur de terminal et le shell de script. Si vous souhaitez utiliser des alias, vous devez les charger explicitement. Si vous les gardez dans un fichier séparé, ce serait quelque chose commeou sur la ligne de commande
Si vos alias sont dedans
~/.bashrc
, alors utilisez. ~/.bashrc
, mais attention, il peut y avoir des choses dans votre.bashrc
qui provoquent des erreurs car le shell n'est pas interactif. Si cela se produit, la solution la plus simple consiste à diviser vos alias (et fonctions et tout autre paramètre que vous souhaitez utiliser dans le code de collage) dans un fichier distinct et à utiliser.
pour inclure ceux de.bashrc
.la source
J'ai eu le même problème pour activer les environnements virtuels avec Terminator .
L'astuce consiste à tout faire avec juste commande « une »:
bash
. Profitant de son-i
option (interactive) et en utilisant une coutume--rcfile
dans laquellePROMPT_COMMAND
est réglé ce que nous voulons exécuter. Le résultat serait comme ceci:Remplacez simplement
your commands; go here;
par vos commandes réelles. Voir cette réponse pour une explication .la source
Ajoutez simplement l'autre commande de la même manière que vous avez ajouté la première. Par exemple, pour exécuter
ls
:Vous pouvez l'ajouter à l'option "commande" de votre profil:
La raison pour laquelle vous ne l'obtenez pas
rake
est qu'elle n'est pas dans le chemin par défaut. Pour l'utiliser, vous devez spécifier le chemin. Donc, exécutez d'abord cette commande dans votre terminal:Cela retournera quelque chose comme
/foo/bin/rake
. C'est le chemin dont vous avez besoin. Prenez-le et ajoutez-le à la commande personnalisée ci-dessus:Cela ne fonctionnera pas pour les alias. Les alias sont configurés par votre shell et ne seront pas disponibles ici. Une solution de contournement consiste à utiliser des scripts à la place. Donc, si vous avez un alias comme celui-ci:
Créez un script, appelez-le
foo.sh
et enregistrez-le/home/youruser/bin
, avec ces contenus:Et rendez-le exécutable:
Ensuite, dans la section "Commande personnalisée", utilisez:
la source
rake
devriez le faire si vous utilisez le chemin complet/path/to/rake
.cd /path/to/rake; rake; bash
ça/path/to/rake; rake; bash
.Si vous faites un clic droit sur une fenêtre Terminator ouverte, vous pouvez choisir "Préférences". Choisissez le "Profil" et à partir de là, l'onglet "Commande". Il y a une case à cocher intitulée «Exécuter une commande personnalisée au lieu de mon shell».
Je crois que c'est ce que vous recherchez.
la source
N'utilisez simplement pas '
command =
' pour changer de répertoire. Utilisez-le pour votre commande réelle!Lors de l'édition
.config/terminator/config
, spécifiez simplementdirectory = <dir>
' lorsque vous souhaitez que le terminal se place automatiquement dans un répertoire donné, oucommand = <cmd>; <your_shell>
' lorsque vous souhaitez exécuter une commande personnalisée, et pas simplement changer de répertoirePar exemple:
Si vous voulez seulement que le terminal se connecte
<dir>
au démarrage, alors spécifiez 'répertoire' et laissez 'commande' vide:Si vous souhaitez uniquement exécuter une commande personnalisée, spécifiez uniquement la commande:
Si vous voulez à la fois cd dans DIR et exécuter la commande:
la source