自宅の開発環境としてUbuntuデスクトップを使うようにしてみました.
元々定義していた.tmux.conf
だとreattach-to-user-namespaceがある前提で書かれておりtmuxが起動しなかったので、
最低限起動できるように条件分岐させてmacOSでもUbuntuでもどちらでも起動するようにしてみました.
動作環境
環境固有の問題の可能性もあるのでツールやソフトウェアのバージョンを書いておきます.
- tmux ... 2.1
- zsh ... 5.1.1
reattach-to-user-namespaceがある時だけ実行させる
まずは変更前の.tmux.conf
を見てみます.
... bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'" set -g default-command "reattach-to-user-namespace -l ${SHELL}" # ここ set-option -g renumber-windows on ...
default-command
でreattach-to-user-namespaceが指定されており、必ずここで落ちます.
Ubuntuの環境ではreattach-to-user-namespaceはインストールしていない、というよりもまず使う必要はないため、
実行されないことが期待する挙動になります.
後はtmuxのif-shell
を利用して「reattach-to-user-namespaceがある時のみdefault-command`を実行」されるように変更します.
... if-shell "[ -x $(where reattach-to-user-namespace) ]" 'set -g default-command "reattach-to-user-namespace -l ${SHELL}" ...
これでUbuntu環境でもtmuxが起動するようになり、macOSではreattach-to-user-namespaceが呼び出され、どちらの環境でも期待した動作になりました.