0

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
4

2 に答える 2

0

あなたの問題はstart_host、切り離されたモードではなく( function で) screen を起動することだと思います。つまり、コマンドscreen ssh $1は関数をブロックし、実行プロセスはscreen終了するまで続行できません。

-d -m分離モードで画面を起動するために使用することをお勧めします。

start_host() {
  screen -d -m ssh $1
  sleep 1
  screen -X chdir $2
}
于 2012-06-15T14:22:47.097 に答える
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
于 2012-08-23T06:18:28.657 に答える