37 votes

Comment démarrer tmux avec mon environnement actuel ?

Ou du moins la partie qui a un sens.

Plus précisément, j'ai quelques variables d'environnement, qui ont été exportées en exécutant un script, pour créer un environnement adéquat pour la tâche à accomplir. Lorsque j'exécute tmux, ces variables ne sont visibles nulle part, ni dans l'environnement global ni dans l'environnement de session. Bien sûr, je peux exécuter à nouveau ce script mais ...

Je serais satisfait si je pouvais spécifier les variables particulières dans mon fichier .tmux.conf cependant :

set-environment VAR $VAR

Ne fait pas ce que j'attendais.

Merci d'avance :)

Ah, je pense que je sais pourquoi.

Quand on démarre une deuxième session de tmux, disons dans un autre terminal, il copie l'environnement de la première session. La première session prend l'environnement actuel du shell appelant et y ajoute un peu de tmux.

Ma solution actuelle consiste à arrêter et redémarrer mes sessions tmux lorsque j'ai besoin de changer d'environnement.

68voto

Chris Johnsen Points 50064

Vous devez configurer le tmux option de session update-environment pour inclure les variables que vous souhaitez voir mises à jour lors de la création de nouvelles sessions. La valeur par défaut inclut plusieurs variables X11 et SSH courantes :

DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY

Pour ajouter vos variables, utilisez la fonction set-option tmux avec son -g y -a (ajouter à la valeur "globale" (par défaut) existante). Dans votre ~/.tmux.conf :

set-option -ga update-environment ' YOUR_VAR'

Veillez à inclure l'espace avant afin que le nom de votre variable soit séparé du nom arrière dans la valeur par défaut.

0voto

tejr Points 173

Vous devez export les variables d'environnement dans votre script, ce qui les rendra disponibles aux sous-shells que tmux spawns. Vous pouvez le faire en ajoutant en préambule export aux définitions des variables pertinentes.

Ça ne marche pas :

$ EXAMPLE_VAR=example
$ tmux
$ echo $EXAMPLE_VAR

C'est le cas :

$ export EXAMPLE_VAR=example
$ tmux
$ echo $EXAMPLE_VAR
example

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X