나는 비슷한 문제가 있었다. 제 상황에서는 설정 DISPLAY
이 충분하지 않았습니다. 기본적으로 일부 환경은 새 세션뿐만 아니라 tmux 서버를 시작할 때 (첫 번째 세션을 시작할 때) 설정됩니다. 다음은 나를 위해 작동하지만 그것이 최적인지 의심합니다.
에서 .tmux.conf
tmux가 외부 환경에서 유지하려는 변수를 기억하게하십시오. 로컬에서 Gnome Terminal을 사용하는 것과 Terminal.app를 원격으로 사용하는 것이 다른 것을 사용했습니다. 그들 중 일부는 아마도 필요하지 않지만 어느 것이 확실하지 않습니다. -g
플래그는 정확하지 않을 수 있습니다.
set -g update-environment "\
CLUTTER_IM_MODULE \
DBUS_SESSION_BUS_ADDRESS \
DBUS_SESSION_BUS_ADDRESS \
DEFAULTS_PATH \
DESKTOP_AUTOSTART_ID \
DESKTOP_SESSION \
DISPLAY \
GDMSESSION \
GNOME_DESKTOP_SESSION_ID \
GPG_AGENT_INFO \
GTK_IM_MODULE \
GTK_MODULES \
SESSION_MANAGER \
SSH_AGENT_PID \
SSH_ASKPASS \
SSH_AUTH_SOCK \
SSH_CONNECTION \
WINDOWID \
WINDOWPATH \
XAUTHORITY \
XDG_CONFIG_DIRS \
XDG_CURRENT_DESKTOP \
XDG_DATA_DIRS \
XDG_MENU_PREFIX \
XDG_RUNTIME_DIR \
XDG_SEAT \
XDG_SESSION_DESKTOP \
XDG_SESSION_ID \
XDG_SESSION_TYPE \
XDG_VTNR \
XMODIFIERS \
"
"update-environment"라는 이름에도 불구하고 설정이 실제로 환경을 바꾸지는 않는 것 같습니다. 그러나을 사용하여 검색 할 수 있습니다 tmux show-environment
. 그래서 내 환경을 업데이트하는 데 사용했습니다 .zshrc
.
zshrc_restore_x11_vars()
{
if [[ -z $TMUX ]]
then
return 0
fi
local tmux_env="$(tmux show-environment)"
for var_line in ${(f)tmux_env}
do
if [[ $var_line == -[A-Za-z_]* ]]
then
local var=${var_line#-}
unset $var
elif [[ $var_line == [A-Za-z_]*'='* ]]
then
export $var_line
fi
done
}
precmd()
{
zshrc_restore_x11_vars
}
preexec()
{
zshrc_restore_x11_vars
}
tmux show-environment -s
아마 사용하는 것이 더 좋았을 것입니다. 그러나 나는 man tmux
이 답변을 쓰는 부분을 다시 읽을 때까지 그것에 대해 알지 못했습니다 .
그래도 기존 세션을 사용할 때 가끔 분리하고 다시 연결해야합니다. 그것은 이전보다 훨씬 덜 성가 시지만.
전체 공개 : 사용의 아이디어 tmux show-environment
에 precmd
와 preexec
후크 내 자신의 아니었지만, 나는 그것을보고 어디 잊어 버려. 당신이 그것을 쓴 곳, 누구 에게든 감사합니다.