root がない環境で zsh をログインシェルっぽく使う
前提
zsh
がどこかにあるtmux
がどこかにある
方法
上からオススメ順。
SHELL 環境変数に書く
何らかの手段で SHELL
を書き出す。
export SHELL=/path/to/zsh
ssh
コマンドで指定できると便利っぽいが、現実的な環境ではなかなか上手くいかない。SuperUserのこの回答が参考になるかもしれない。
.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
さすがにそれはない
おわりです
おわりです
追記
@0x_osyoyu `test -e zsh` よりも `hash zsh &>/dev/null` のほうがいいと思います (というか test のほうだと pwd に zsh という名前のファイルがあるかしか見てない気が) http://t.co/wz36IeFFO7
— 110話 (@polamjag) 2015, 4月 14
なるほど、ということで "test -e /path/to/zsh"
に変更しました。tmux の default-shell は絶対パスを渡さなければならないのでアレでソレです。
*1:StackOverflowで読んだ覚えがあるがURLを忘れてしまった