初始多屏幕,终端上有自己的目录

时间:2012-05-11 03:33:42

标签: shell

我想在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

2 个答案:

答案 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