Quando sono passato da su+bash a su+tmux+zsh Ho notato che ottengo il $XAUTHORITY variabile definita come /root/.xauthXXXXXX dove XXXXXX sono 6 caratteri alfanumerici casuali. Con la configurazione precedente, X ha funzionato perfettamente con root, ma ora devo copiare ~username/.Xauthority a $XAUTHORITY .
La variabile non è definita da nessuna parte; Ho controllato .zshrc , /etc/profile* , /etc/profile.d/* ecc.
# env
TERM=screen
SHELL=/usr/bin/tmux
USER=toor
TMUX=/tmp//tmux-0/default,6495,3
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PWD=/root
SHLVL=2
HOME=/root
LOGNAME=toor
DISPLAY=:0.0
XAUTHORITY=/root/.xauthUSzLl4
COLORTERM=gnome-terminal
_=/bin/env
OLDPWD=/root
EDITOR=vim
vcs_info_msg_0_=
vcs_info_msg_1_=
% echo $XAUTHORITY
/home/mpiechotka/.Xauthority
% su
password:
# echo $XAUTHORITY
/root/.xauthUSzLl4
# ls $XAUTHORITY
ls: cannot access /root/.xauthUSzLl4: No such file or directory
# cat .tmux.conf
set -g default-command /bin/zsh
set -g default-shell /bin/zsh
su è alias di su - toor e si apre tmux come conchiglia. toor è un alias di root con shell diversa.
Ho appena scoperto che appare anche su su normale. Non l'ha fatto qualche tempo fa.
set-environment non ha funzionato.
xhost +localhost non ha funzionato, ma xhost + (disabilitando tutti i controlli) ha funzionato.
Risposta accettata:
Ecco cosa penso stia succedendo.
Quando utilizzi su e bash , il su -session eredita l'ambiente con l'eccezione di USER , HOME e SHELL , quindi XAUTHORITY punta ancora a ~username/.Xauthority e va tutto bene. Tuttavia (dalla pagina man), quando tmux il server è avviato:
… tmux copia l'ambiente nell'ambiente globale
; inoltre, ogni sessione dispone di un ambiente di sessione. Quando viene creata una finestra
, la sessione e gli ambienti globali vengono uniti con
all'ambiente della sessione che sovrascrive qualsiasi variabile presente in entrambi.
e sospetto (senza conoscere i dettagli di chiamata) che quando cambi le credenziali, su cerca di trovare .Xauthority in /root e poiché non riesce a trovarne uno quando devi eseguire una X app, ne crea una. Mi vengono in mente un paio di modi in cui puoi provare a risolvere questo problema:
- Richiama
suutilizzandosu -. Questo copierà l'ambiente dell'utente reale - Aggiungi
set-environment <name> <value>al tuotmuxconfig.
Sfortunatamente, non posso testarlo da quando sono passato di recente a i3 (che è fantastico) e non ho una macchina di riserva.