Eu implementei um script para fazer isso. Você pode obtê-lo aqui: link
Depois de colocar screen-sendenv.py
no seu $PATH
, você pode usar o seguinte snippet no seu .bashrc:
VARS_TO_UPDATE="DISPLAY DBUS_SESSION_BUS_ADDRESS SESSION_MANAGER GPG_AGENT_INFO"
screen_pushenv () {
screen-sendenv.py -t screen $VARS_TO_UPDATE
}
tmux_pushenv () {
screen-sendenv.py -t tmux $VARS_TO_UPDATE
}
screen_pullenv () {
tempfile=$(mktemp -q) && {
for var in $VARS_TO_UPDATE; do
screen sh -c "echo export $var=\$$var >> \"$tempfile\""
done
. "$tempfile"
rm -f "$tempfile"
}
}
tmux_pullenv () {
for var in $VARS_TO_UPDATE; do
expr="$(tmux showenv | grep "^$var=")"
if [ -n "$expr" ]; then
export "$expr"
fi
done
}
Para usá-lo, basta executar screen_pushenv
antes de executar screen -r
para reconectar a sua sessão de tela. Em seguida, após anexar com screen -r
, você poderá atualizar o ambiente em seus shells existentes com screen_pullenv
. As funções tmux realizam o mesmo para o tmux, outro multiplexador de terminais similar ao screen.