为什么我的 shell 创建 split-window tmux 会话的脚本不起作用
Why does my shell script for creating a split-window tmux session not work
我在 macOS 上使用 zsh。
我创建了一个文件夹 ~/bin/
,并将其添加到我的路径中。我创建了一个包含以下代码的 shell 脚本 ~/bin/testscript
#!/bin/sh
tmux new-session -s testsession
tmux split-window -v
并使用 chmod -R 700 ~/bin
设置权限 -rwx------
。
当通过在 shell 中键入它们来连续执行 shell 脚本中的行时,我得到一个垂直拆分 windows 的新 tmux 会话。这是预期的行为。但是,当我在 shell 中键入 testscript
时,我只会得到一个新的 tmux 会话,但不会垂直拆分 windows.
我需要做什么才能更改脚本以使用拆分 windows 获得会话?我从 this thread 复制了上面的代码,但它对我不起作用。
当您手动 运行 那些命令时,您将在新会话中的 shell 运行ning 中键入第二行。当您 运行 脚本时,第二行不会在该会话中执行。尝试:
tmux new-session -s testsession "$SHELL" \; split-window -v
或
#!/bin/bash
tmux new-session -d -s testsession
tmux split-window -v -t testsession:0.0
tmux attach-session -t testsession
您获得一个新会话,并且您立即附加到该会话。这会导致对 tmux
的第一次调用被阻塞,直到您从该会话中分离出来,从而阻止脚本在第二次调用 tmux
.
之前
为防止出现这种情况,请使用 -d
选项创建新会话而不立即附加到它。使用 split-window
创建第二个窗格后, 然后 您可以附加到会话。
#!/bin/sh
tmux new-session -d -s testsession
tmux split-window -v -t testsession
tmux attach -t testsession
split-window
的 -t
选项在技术上需要一个 window,而不是一个会话,但由于新会话只有一个 window,它默认为那个 window.
tmux attach
,没有 -t
选项,将附加到最近使用的会话,因此 -t testsession
在这里可以被认为是可选的。
我在 macOS 上使用 zsh。
我创建了一个文件夹 ~/bin/
,并将其添加到我的路径中。我创建了一个包含以下代码的 shell 脚本 ~/bin/testscript
#!/bin/sh
tmux new-session -s testsession
tmux split-window -v
并使用 chmod -R 700 ~/bin
设置权限 -rwx------
。
当通过在 shell 中键入它们来连续执行 shell 脚本中的行时,我得到一个垂直拆分 windows 的新 tmux 会话。这是预期的行为。但是,当我在 shell 中键入 testscript
时,我只会得到一个新的 tmux 会话,但不会垂直拆分 windows.
我需要做什么才能更改脚本以使用拆分 windows 获得会话?我从 this thread 复制了上面的代码,但它对我不起作用。
当您手动 运行 那些命令时,您将在新会话中的 shell 运行ning 中键入第二行。当您 运行 脚本时,第二行不会在该会话中执行。尝试:
tmux new-session -s testsession "$SHELL" \; split-window -v
或
#!/bin/bash
tmux new-session -d -s testsession
tmux split-window -v -t testsession:0.0
tmux attach-session -t testsession
您获得一个新会话,并且您立即附加到该会话。这会导致对 tmux
的第一次调用被阻塞,直到您从该会话中分离出来,从而阻止脚本在第二次调用 tmux
.
为防止出现这种情况,请使用 -d
选项创建新会话而不立即附加到它。使用 split-window
创建第二个窗格后, 然后 您可以附加到会话。
#!/bin/sh
tmux new-session -d -s testsession
tmux split-window -v -t testsession
tmux attach -t testsession
split-window
的 -t
选项在技术上需要一个 window,而不是一个会话,但由于新会话只有一个 window,它默认为那个 window.
tmux attach
,没有 -t
选项,将附加到最近使用的会话,因此 -t testsession
在这里可以被认为是可选的。