tmux の if-shell は sh で実行される
tmux の if-shell
ではシェルコマンドの結果に応じて実行するコマンドを変更できる。
今までここにバージョンによって設定を変化させるように書いていたが上手く動いていない時があった。
if-shell "[[ `tmux -V` =~ 2.[1-9]$ ]]" "set -g mouse on"
理由
tmux は sh -c
でシェル部を実行しているため、 sh の実装が bash でない場合は [[
が使えない。*1
tmux/job.c at ddffda4da55e2d4040c981bfb5257c4f7281000f · tmux/tmux · GitHub
Fix
[
など、 sh でも使えるような(POSIX に準拠した)スクリプトに修正する。
今回は grep を使うようにした。
if-shell "tmux -V | grep -q '2.[1-9]'" "set -g mouse on"
間違えて yes
を入れたときに、終了するために ps
見てたら sh -c yes
が起動していたので気づいた。
*1:今回は dash だった