配置 tmux 以使用 zsh

配置 tmux 以使用 zsh

现在,我已将 iTerm 会话配置为使用 zsh ( /usr/local/bin/zsh),但我正在尝试将 tmux 配置为使用 zsh,而不是/bin/bash/当前默认的 。到目前为止,我读到的任何内容都没有让我到达我需要的地方。我可能错过了任何想法或事情吗?

以下是有关我当前设置的一些详细信息。谢谢!

检查状态:

1)打开iTerm

echo $SHELL

/bin/bash

ps -p $$

PID TTY 时间 CMD 19626 ttys000 0:00.52 /usr/local/bin/zsh

2)运行tmux

tmux

echo $SHELL

/usr/local/bin/zsh

配置:

iTerm 配置文件 > 常规 > 命令:

/usr/local/bin/zsh

在.tmux.conf中:

设置选项 -g 默认 shell /usr/local/bin/zsh

答案1

您需要设置default-command

set -g default-command /usr/local/bin/zsh

default-shell变量仅用于创建登录 shell,当default-command为空时 - 这是默认值。

或者您可以简单地将默认 shell 更改为zsh,在这种情况下,tmux将启动登录 shell,而不是非登录 shell。

答案2

除了 @cuonglm 所说的之外,检查您的.tmux.conf.

例如,我在 Mac 上的 iTerm 中使用典型的复制和粘贴集成:

set-option -g default-command "reattach-to-user-namespace -l bash"

...为了与 zsh 正常运行,必须将其更改为:

set-option -g default-command "reattach-to-user-namespace -l zsh"

答案3

如果您想将此 tmux 设置与常规默认设置隔离。一种优雅的解决方案是使用$SHELL和的组合-L

像这样设置别名:

alias zshtmux='SHELL=/usr/local/bin/zsh tmux -L zsh'

这将创建一个名为 的单独 tmux 实例zsh。该实例的默认 shell 会暂时更改为/usr/local/bin/zsh,与其他 tmux 实例分开。

从这里,您可以使用此实例zshtmux

zshtmux new
zshtmux attach

相关内容