2011-12-27 3 views
28

O almeno la parte di esso, ha senso.Come posso iniziare tmux con il mio ambiente attuale?

In particolare, ho alcune variabili di ambiente, che sono state esportate eseguendo uno script, per creare un ambiente adeguato per l'attività in corso. Quando eseguo tmux queste variabili non si vedono da nessuna parte, né nell'ambiente globale o di sessione. Certo che posso eseguire questo script di nuovo, ma ...

Sarei contento se potessi specificare le Vars particolari nel mio file .tmux.conf però:

set-environment VAR $VAR 

non fa quello che ci si aspetterebbe.

Grazie in anticipo :)

Ah, credo di sapere il perché.

Quando si avvia una seconda sessione di tmux, ad esempio in un altro terminale, copia l'ambiente dal primo. Il primo prende praticamente l'attuale ambiente della shell chiamante e aggiunge un po 'di complessità.

La mia soluzione attuale è solo l'arresto e l'avvio delle mie sessioni tmux quando ho bisogno di cambiare ambiente.

+0

Grazie per il sollecito George. – Phluks

+3

C'è un modo più semplice per ciò che voglio raggiungere. Utilizzando l'opzione '-L' (o '-S'). Questi avviano un nuovo server con l'ambiente corrente. Ex. 'tmux -L newenv' Ogni encantation crea una nuova sessione nel server su quel socket, con lo stesso ambiente. (È possibile scegliere il proprio nome, ovviamente) 'tmux -L newenv list-sessions, Elenca le sessioni su quel particolare server. ... Etc. – Phluks

risposta

54

È necessario configurare l'opzione di sessione tmuxupdate-environment per includere le variabili che si desidera aggiornare durante la creazione di nuove sessioni. Il valore di default comprende diverse variabili comuni X11 e SSH:

DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY 

Per aggiungere le variabili, utilizzare il comando set-optiontmux con i suoi -g e -a bandiere (aggiungere al valore esistente “globale” (default)). Nel vostro ~/.tmux.conf:

set-option -ga update-environment ' YOUR_VAR' 

essere sicuri di includere lo spazio iniziale in modo che il nome della variabile è separato dal nome finale del valore di default.

+0

Ottima risposta. Grazie. – Phluks

+3

Ottima risposta. Una nota: il file ~/.tmux.conf non verrà letto quando il server tmux è già in esecuzione, quindi le modifiche come questa non avranno effetto. Mi aspettavo che fosse letto durante 'tmux attach-session', ma non è stato applicato. – Wade

+0

Ci scusiamo per resuscitare questo problema ma la pagina man dice "L'opzione di sessione update-environment può essere utilizzata per aggiornare l'ambiente di sessione dal client quando viene creata una nuova sessione o una vecchia connessione". Questo suggerisce che dovrebbe aggiornarli quando si ricollega alle sessioni _existing_ ma non sembra. Qualche idea? – sjbx