我想在host1上打开一个屏幕并将目录更改为$ HOME / bin。 host2并将目录更改为$ HOME / prj。
这是我的脚本,但是chdir无法正常工作。
#!/bin/bash
start_host() {
screen ssh $1
sleep 1
screen -X chdir $2
}
[ x"$TERM" = x"screen" ] || exec screen -ln -S xxx -c /dev/null $0
sleep 1
screen -X zombie cr
screen -X caption always "%{= wk}%-w%{= BW}%n:%t%{-}%+w%-="
screen /bin/bash
start_host host1 bin
start_host host2 prj
答案 0 :(得分:0)
我想,你的问题是你开始屏幕(功能start_host
)而不是分离模式。这意味着命令screen ssh $1
会阻止该函数,并且在screen
完成之前执行过程无法继续。
我建议使用-d -m
以分离模式启动屏幕:
start_host() {
screen -d -m ssh $1
sleep 1
screen -X chdir $2
}
答案 1 :(得分:0)
尝试和错误后,这是我的解决方案。
#!/bin/bash
start_host() { # <host> <dir>
screen ssh $1
screen -X eval "stuff 'cd $2'" "stuff \015"
screen -X select 0
}
[ x"$TERM" = x"screen" ] || exec screen -l -c /dev/null $0 $*
screen -X caption always "%{= wk}%-w%{= BW}%n:%t%{-}%+w%-="
start_host host1 bin
start_host host2 prj
read -p "Press enter to quit all windows" a
screen -X quit