为何在tmux中通过run-shell执行tmux new创建新会话失败?
问题原因与解决方法
问题出在tmux new的执行逻辑上:
tmux neww是创建新窗口,这个操作依托当前tmux会话的终端环境就能完成,run-shell可以正常调用。- 而
tmux new默认会创建并立即附着到新会话,但run-shell是在tmux的后台非交互环境中执行脚本的,没有可供附着的终端,所以命令执行失败,返回状态码1。
两种解决方式:
1. 仅创建后台会话(不切换过去)
把脚本里的命令改成:
tmux new -d
-d参数让tmux创建会话后不自动附着,脚本就能在后台正常执行,不会因为终端缺失报错。
2. 创建并切换到新会话(更直接的做法)
不需要通过外部脚本,直接修改.tmux.conf的绑定:
bind -n M-g new
直接绑定tmux的内置new命令,而不是通过run-shell调用脚本,这样tmux会在当前终端环境下处理会话切换,不会有终端缺失的问题。
内容的提问来源于stack exchange,提问作者vdegenne
相关产品推荐
相关产品推荐

