Descobrir se o alias / função / script atual está sendo executado dentro do Tmux - com um toque

3

NB: Sim, eu li Como posso saber se estou em uma sessão do tmux de um script bash?

Como posso saber se estou executando dentro de uma sessão do Tmux a partir do meu shell ou shell script ou função de shell ou alias se eu usei sudo su - entre?:

    
por 0xC0000022L 06.06.2014 / 15:06

2 respostas

3

No seu arquivo /etc/sudoers , você pode explicitamente permitir que as variáveis de ambiente sejam propagadas para o ambiente sudo.

Exemplo

Defaults    requiretty

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY" 

Portanto, um método seria adicionar uma variável resultante de tmux e deixá-la passar.

    
por 06.06.2014 / 15:29
2
% sudo su -- 2<<STATE
>    TMUX='$TMUX'
>    exec 2>/dev/tty 
> STATE
# . /dev/fd/2
# { 
#   echo "$TMUX"
#   echo "$TMUX" >&2
# }

###OUTPUT

/tmp/tmux-1000/default,23878,1
/tmp/tmux-1000/default,23878,1

sudo fechará todos os descritores de arquivo para seu processo chamado, mas 0,1,2 e você precisará de /dev/tty on <&0 ou não será possível digitar uma senha, mas se aceitar o bloqueio >&2 para o intervalo leva para executar um único comando, então você pode fazer o acima.

Você pode usar essa técnica para trazer o que mais quiser.

    
por 06.06.2014 / 15:46

Tags