2012-05-11 17 views
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 

答えて

0

私はあなたの問題はあなたが(機能start_hostで)画面を起動しないデタッチモードであることであること、とします。つまり、コマンドscreen ssh $1が機能をブロックし、実行プロセスはscreenが終了するまで続行できません。

私はデタッチモードで画面を起動するために-d -mを使用することをお勧めします:ここで

start_host() { 
    screen -d -m ssh $1 
    sleep 1 
    screen -X chdir $2 
} 
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 
関連する問題