web-dev-qa-db-fra.com

Exécuter la commande dans new gnome-terminal et .bashrc

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?

2
el.atomo

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"
2
el.atomo

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

2
coteyr