我在创建新会话以执行命令时遇到了一些麻烦。
以下是 .tmux.conf 的一部分:
set-window-option -g automatic-rename off
set-option -g allow-rename off
new -A -s 'main' -n 'servers' 'ls' # troubled line
splitw -h -p 35 htop
splitw -v
splitw -v -t 1
splitw -v -t 1
neww -n 'irc' weechat-curses
selectw -t 0
这就是我正在处理的问题:
new -A -s 'main' -n 'servers' 'ls'
以下是我打开tmux的方法:
alias tux='TERM=screen-256color-bce tmux -f ~/.tmux.conf attach-session -t main'
'ls'必须导致错误,因为当它出现时,初始窗格不会被创建。如果我将其更改为“顶部”,它可以正常工作并执行命令。
那么为什么顶级工作而不是ls(或我试过的任何其他命令)?
答案 0 :(得分:5)
top
一直运行直到你退出。 ls
在打印当前目录的内容后退出。这会导致ls
运行的窗口关闭。
setw -t servers remain-on-exit on
应该在命令退出后保持名为'servers'的窗口不被关闭,但是在new-session
命令运行之前和new-session
之后窗口不存在这一事实很复杂返回,运行setw
命令可能为时已晚(尽管你可以尝试)。
而是创建一个新会话,其中默认值是在命令存在后保留窗口:
new -A -s 'main' -n 'servers' 'ls' # troubled line
set -t main set-remain-on-exit on
neww -n 'servers' ls
根据您的上一条评论,忽略上述内容,并将您的new
命令替换为
new -A -s 'main' -n 'servers'
send-keys -t servers.0 ls Enter
这将创建一个常规窗口,其命令是常规shell,但随后模拟在第一个shell提示符下键入ls
命令,以便为您提供该目录中的文件列表。在ls
完成后,您将回到shell中,并且窗格将继续存在,直到shell本身完成。