我想用shell命令运行tmux我尝试:tmux new-session -d -s foo 'echo intmux'(我想稍后在bash脚本中使用它)但它不起作用。我希望:1)Tmux打开新窗口(如tmux新)2)命令echo intmux将被调用
tmux new-session -d -s foo 'echo intmux'
echo intmux
tzdcorbm1#
1)Tmux打开新窗口(如tmux新)您不会看到新会话,因为您使用-d(detached)标志创建了它。你想要的(执行一个命令并打开一个shell)可以很容易地实现:tmux new -s foo 'echo intmux; $SHELL'另一个绑定到特定(bash)shell的棘手选项:
-d
tmux new -s foo 'echo intmux; $SHELL'
tmux new-session -s foo 'bash --rcfile <(echo ". ~/.bashrc; echo intmux")'
这允许保留默认行为(阅读. ~/.bashrc)并传递任意命令。
. ~/.bashrc
vx6bjr1n2#
我发现了另一个选择:tmux new-session $0 \; send-keys "echo intmux" Enter(而不是$0,可以只有bash)上面的优点是命令通常存储在shell历史中。
tmux new-session $0 \; send-keys "echo intmux" Enter
$0
bash
mzsu5hc03#
你可以跑
tmux new-session '-s foo' \; neww '-t 2 -n echo' mc
但这会在运行您的命令的新会话中生成另一个窗口,因此您可能希望关闭第一个窗口
tmux new-session '-s foo' \; neww '-n echo' mc \; kill-window '-t 1'
3条答案
按热度按时间tzdcorbm1#
1)Tmux打开新窗口(如tmux新)
您不会看到新会话,因为您使用
-d
(detached)标志创建了它。你想要的(执行一个命令并打开一个shell)可以很容易地实现:
tmux new -s foo 'echo intmux; $SHELL'
另一个绑定到特定(bash)shell的棘手选项:
这允许保留默认行为(阅读
. ~/.bashrc
)并传递任意命令。vx6bjr1n2#
我发现了另一个选择:
tmux new-session $0 \; send-keys "echo intmux" Enter
(而不是
$0
,可以只有bash
)上面的优点是命令通常存储在shell历史中。
mzsu5hc03#
你可以跑
但这会在运行您的命令的新会话中生成另一个窗口,因此您可能希望关闭第一个窗口