理系学生日記

おまえはいつまで学生気分なのか

tmuxの設定をOSによって切り替える

設定ファイルには OS あるいは環境によって、設定を切り替える必要があったりします。tmux で、これをどう実現するのは 21 世紀最大の難問でしたが、これ if-shell で解決した。具体例を挙げると、たとえば OSX 系と設定ファイルを分けるときは以下のように .tmux.conf に書いておけば良い。

|conf| if-shell 'test "$(uname -s)" = Darwin' "source-file ~/.tmux.d/.tmux.conf.osx" "source-file ~/.tmux.d/.tmux.conf.other" ||< 文法としては if-shell の第一引数が比較条件となるシェルコマンドで、これが真を返したときは第二引数のコマンドが、疑を返したときは第三引数のコマンドが実行される。参考演算子として考えれば直感的。if-shell には if というエイリアスも張られているので、人によっては、これを使うともうちょっと読みやすくなるやもしれない。

第一引数は、別に OS チェックに限定されず、特定のコマンドの実行結果によって処理分岐を実現させることができるので、可能性は無限大です。使用用途はそれほど思い浮かびません。