다음 위치에 변수를 할당했습니다 .tmux.conf
.
setenv -g var "Something"
이 변수를 사용하지 않고 터미널로 보내기 위해 키를 바인딩하려면 어떻게 해야 합니까 prefix:send $var
?
시도했지만 성공하지 못했습니다 bind -n M-q send $var Enter
.AltQ
답변1
setenv -g var "Something"
bind -n M-q run-shell "tmux send #{var}" # or
bind -n M-q run-shell 'tmux send ${var}'
Tmux의 "글로벌 환경"은 Tmux 서버의 "프로세스 환경"과 다르다는 것을 이해하는 것이 중요합니다. 매뉴얼 페이지에서:
GLOBAL_AND_SESSION_ENVIRONMENT
서버가 시작되면 tmux는 환경을 다음 위치에 복사합니다.지구 환경
솔직히 말해서 이것은 나에게 조금 이상합니다. 나는 우리 모두 Tmux가 쉘에 들어가는 -g
것처럼 global() 변수를 자체 프로세스로 해결하기 를 기대한다고 생각 하지만 그것이 작동하는 방식은 아닙니다..bashrc
"글로벌 환경"은 Tmux가 적용 가능한 환경입니다.생성되는 모든 세션, Tmux 자체가 아닌.
var
다음을 통해 Tmux 서버 환경의 일부가 아님을 증명할 수 있습니다 .
$ strings /proc/$(pgrep -xo "tmux: server")/environ
$ strings /proc/$(pgrep -xo "tmux: server")/environ | grep Something
실제로는 Tmux의 일부도 아닙니다.고객의환경:
$ strings /proc/$(pgrep -xo "tmux: client")/environ | grep Something
그러나 그것은예Tmux가 새로 생성된 세션에 전달하는 환경의 일부:
$ strings /proc/$$/environ | grep Something
var=Something
따라서 설정한 값을 활용하기 위해 다음을 실행하는 .tmux.conf
데 사용할 수 있습니다.run-shell
새로운shell을 실행하면 Tmux가 전역 환경을 채우고 tmux send ...
그곳에서 명령을 실행합니다.