Environment-Variables

向正在執行的 tmux 會話發送命令(如 screen -X)

  • July 15, 2019

我希望從 screen 切換到 tmux 以滿足我的終端多路復用需求,但是我需要在 tmux 中複製 screen 的一項功能:-X 選項,它允許在現有的螢幕會話中執行任意螢幕命令。這允許我修改正在執行的螢幕會話的環境以指向一個新的 X 伺服器,因為我的螢幕會話往往比我的 X11 登錄壽命更長。例如,我可以screen -X setenv DISPLAY $DISPLAY在我的 X11 啟動腳本中添加一些內容。

無論如何,tmux 中有沒有辦法將任意命令發送到正在執行的 tmux 會話?或者,在執行的 tmux 中更新環境變數的方法是可以接受的。

它只是tmux,可選地帶有-t選擇會話的選項(對應-S於螢幕)。

tmux set-environment DISPLAY $DISPLAY

回答關於更新環境的部分問題:預設情況下, tmux在創建或重新附加會話時會從客戶端環境中繼承某些變數。

從手冊頁:

update-environment session 選項可用於在創建新會話或重新連接舊會話時從客戶端更新會話環境。

預設值為“DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY”。

DISPLAY因此,在重新附加會話時,您無需執行任何操作即可獲取更新的設置。

請注意,這僅對您在舊會話中創建的視窗或窗格生效,但現有視窗無效。

引用自:https://unix.stackexchange.com/questions/27701