Tmux sessions should be nested with care, unset $TMUX to force

tmux是一個終端機操作很方便使用的工具。每次進入終端機操作,都要打tmux指令啟動操作,實為麻煩。於是,我把tmux指令加在.zshrc的最後面,心想未來只要終端機進入後,便自動啟動tmux。

啟動終端機,確實tmux也被自動執行起來,但畫面上出現”Tmux sessions should be nested with care, unset $TMUX to force“的警告文字。這行文字的意思是要小心tmux被巢狀開啟,如果要解決這個問題,可以unset $TMUX變數來強制允許巢狀開啟。不過,操作上大多數應該不會使用到巢狀開啟。最好的方式應該是在.zshrc中就檢查是否該session是否存在,然後不要造成巢狀開啟。

指令如下:

#!/bin/bash

session_name="sesh"

# 1. First you check if a tmux session exists with a given name.
tmux has-session -t=$session_name 2> /dev/null

# 2. Create the session if it doesn't exists.
if [[ $? -ne 0 ]]; then
  TMUX='' tmux new-session -d -s "$session_name"
fi

# 3. Attach if outside of tmux, switch if you're in tmux.
if [[ -z "$TMUX" ]]; then
  tmux attach -t "$session_name"
else
  tmux switch-client -t "$session_name"
fi
自己工作環境tmux截圖

參考網站:

https://koenwoortman.com/tmux-sessions-should-be-nested-with-care-unset-tmux-to-force/