tmux if-shell 設定

最近因為換了新硬碟重灌環境,新系統的 tmux 是 2.2 版本,又有一些設定被移除了,所以決定在 tmux.conf 中直接用 if-shell 參數偵測版本,以決定是否要加入某參數,這樣遇到老系統才不會又要改來改去。

但 tmux 的 if-shell 設定在網路上可說是眾說紛紜。

這篇 How to write if statement in .tmux.conf to set different options for different tmux versions? 可能是很多人會參考到的文章,但被標記成正確答案的那個作法我怎麼試都無效…

最後還是去看 man page,裡面提到:

Execute shell-command using the default shell.

Ubuntu 的 default shell (bin/sh) 是 dash,所以 if-shell 當中的 shell-command 必須是 dash 能接受的語法。前面那篇文章的 -lt、-ge 之類 zsh-style 的敘述在 dash 都不支援。另外像大於符號(>)就必須跳脫後再用單引號括起來

結果就像這樣子(順便推廣一下我的 dotfiles XD)。

要注意每個系統的 default shell 可能不一樣,使用前請先確定一下。

然後這次經驗告訴我還是不要太依靠 stackoverflow(誤)。

 

Sol Lee

Taiwanese. (A little) Python & R & Java programmer. I have interest in IT and ACG.