现在,我已将 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