gnome-sessions가 다시 시작될 때 모든 tmux 쉘에 대한 환경 변수 설정

gnome-sessions가 다시 시작될 때 모든 tmux 쉘에 대한 환경 변수 설정

해결하다이 문제, tmux를 다시 시작하지 않고 gnome을 다시 시작할 때마다 모든 쉘에 대한 환경 변수를 설정해야 합니다 DBUS_SESSION_BUS_ADDRESS(매우 일반적임). tmux이 문제를 어떻게 가장 잘 해결할 수 있습니까?

이 문제를 더 깔끔하게 해결할 수 있는 다른 방법이 있나요?

답변1

dbus-launch이 특별한 경우에는 Gnome을 실행하여 임의의 D-Bus 주소를 생성하는 대신 dbus-daemonX 세션 초기에 명시적으로 시작하고 고정 주소(예: unix:path=~/.dbus-$HOSTNAME-$DISPLAY.

에 있는 정보를 고려하면오류 보고서, 당신은 그것을 멀리 unset DBUS_SESSION_BUS_ADDRESS하고 응용 프로그램이 루트 창 속성에서 버스 주소를 알아내도록 할 수도 있습니다.

일반적인 경우 귀하의 평가는 정확합니다. ptrace현재 가지고 있는 것은 (Apparmor 또는 SELinux와 같은 보안 프레임워크로 인해 프로그램이 충돌하거나 작동하지 않을 수 있음) 또는 셸 명령 삽입(Windows에서만 형식이 유효함)과 같은 신뢰할 수 없는 방법뿐입니다. 쉘 프롬프트에서). 모든 쉘 프롬프트( zsh preexec또는 bash 사용)에서 명령을 실행하면 PROMPT_COMMAND최소한 문제가 발생할 위험이 없습니다.

또 다른 솔루션은 호출을 LD_PRELOAD가로채는 라이브러리입니다 getenv. 과한 느낌도 듭니다.

가장 좋은 옵션은 간접 수준을 생성하여 애플리케이션이 작업을 수행하도록 하는 것입니다. 즉, 환경 변수의 값이 유효한 상태로 유지되도록 정렬하고 애플리케이션이 이를 컨텍스트 인식 방식으로 해석하도록 하는 것입니다. 애플리케이션이 루트 창 속성에서 D-Bus 주소를 조회하도록 하는 것이 이 접근 방식의 한 예입니다.

관련 정보