J'essaie de lancer une commande dans une nouvelle fenêtre gnome-terminal
à partir d'un script Shell. Il semble que mon fichier .bashrc
ne soit pas importé lors de l'appel de gnome-terminal et de l'exécution d'une commande:
gnome-terminal -t "my title" -e vim
Mais cela se produit lors du lancement de gnome-terminal
seul:
gnome-terminal -t "my title"
(à des fins de test, ajoutez simplement un echo "something"
à la fin du .bashrc
)
J'ai aussi essayé explicitement de rechercher le .bashrc
avant d'exécuter vim
sans succès:
gnome-terminal -t "my title" -x $Shell -c "source $HOME/.bashrc; vim"
Est-ce que je manque quelque chose?
J'ai trouvé le problème avec l'aide de cette réponse .
En fait, le .bashrc
a été créé mais n'a pas été traité complètement à cause des lignes suivantes:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
Pour contourner le problème, l’approche la plus propre consisterait à forcer l’exécution de l’instance Shell en mode interactif (comme indiqué ici ):
gnome-terminal -t "my title" -x $Shell -ic "vim"
Non, vous avez raison. gnome-terminal ne source pas .bashrc lors de l'exécution d'une commande via l'argument -e.
Bash et gnome-terminal sont deux choses distinctes. Lorsque vous exécutez sans -e gnome-terminal, votre shell par défaut (qui se trouve être bash) est exécuté. Lorsque vous exécutez avec -e gnome-terminal exécute la commande fournie (bash n'est pas chargé, donc .bashrc n'est pas recherché).
Votre dernier exemple ne fonctionnera pas non plus. $ HOME est une variable en bash et non disponible. De plus, source est une commande bash, et vim a probablement besoin d’un chemin.
La meilleure façon de faire cela, à mon avis, est de créer un script wrapper.
Quelque part dans votre chemin (j'ai ajouté ~/.bin/à mon chemin), créez un fichier nommé vim-x et définissez-le comme exécutable.
#!/bin/bash
source $ HOME/.bashrc
vim "$ @"
Ensuite, vous pouvez exécuter:
gnome-terminal -t "my title" -e /home/user/.bin/vim-x