root がない環境で zsh をログインシェルっぽく使う

前提

  • zsh がどこかにある
  • tmux がどこかにある

方法

上からオススメ順。

SHELL 環境変数に書く

何らかの手段で SHELL を書き出す。

export SHELL=/path/to/zsh

ssh コマンドで指定できると便利っぽいが、現実的な環境ではなかなか上手くいかない。SuperUserのこの回答が参考になるかもしれない。

superuser.com

.tmux.conf を書く

set-option -g default-shell /path/to/zsh

zsh がインストールされていない環境のために if を仕込みたい場合: if-shell "test -e /path/to/zsh" "set-option -g default-shell /path/to/zsh"

ただし、if-shell は非同期で実行されるので最初のウィンドウには間に合わず(?)*1、本来のログインシェルが上がってくる。ペインやウィンドウを分けたりすると zsh が上がってくる。

zsh の場所が /bin/zsh とか /usr/bin/zsh が混在している場合は両方書いておくと良いかもしれない。

ssh コマンドにオプションを渡す

SSH で接続した時に zsh が最初に上がってきてほしいだけの場合 ssh user@hostname -t /path/to/zsh

ログインシェルから zsh を起動する

zsh

さすがにそれはない

おわりです

おわりです

追記

なるほど、ということで "test -e /path/to/zsh" に変更しました。tmux の default-shell は絶対パスを渡さなければならないのでアレでソレです。

*1:StackOverflowで読んだ覚えがあるがURLを忘れてしまった