2011-08-14
screen上に新規作成した別windowに環境変数一つを引き継ぐ方法
screen |
こんなことないですか?
- screenを立ち上げてwindowを一つ開く。
- そのwindow上である一つの環境変数を設定する。
- screen上にもう一つwindowを開く。
- 2で設定した環境変数が新しいwindowに引き継がれてない!
上記の状況を改善する方法です。
方法のポイント
1.普段 export で環境変数(例:XTEST)を設定するところ、以下のようにwrapした別の関数で行うようにし、それに併せて screen の環境変数に設定するようにします。
function export_xtest { export XTEST=$1 screen -X eval "setenv SCREEN_XTEST ${XTEST}" }
2.そしてscreen上にwindowを開いたとき、XTESTにscreenの環境変数を引き取るようにします。
bind c eval 'screen 1' 'echo "export XTEST=$SCREEN_XTEST"'
設定例
.bashrc
if [ -n "$XTEST" ]; then export XTEST=$XTEST fi if [ -n "$SCREEN_XTEST" ]; then export XTEST=$SCREEN_XTEST unset SCREEN_XTEST fi if [ -n "$XTEST" ]; then PS1="[\u@\h:\w $XTEST] \$ " else PS1="[\u@\h:\w] \$ " fi function export_xtest { export XTEST=$1 tscreen -X eval "setenv SCREEN_XTEST ${XTEST}" source ${HOME}/.bashrc }
.screenrc
hardstatus alwayslastline '%m/%d %02c:%s %{= .g}%H%{-} %L=%-w%45L>%{=u g.}%n %t%{-}%+w %-17<%=%{= .y}(%l)' screen 1 bind c eval 'screen 1' 'echo "export XTEST=$SCREEN_XTEST"'
実行例
1.screenを起動します。
2.環境変数を設定します。
3.新たなwindowを開きます。環境変数が引き継がれていることがわかります。
4.環境変数を上書きします。
5.新たなwindowを開きます。上書かれた環境変数が引き継がれていることがわかります。
参考資料
コメントを書く
トラックバック - http://d.hatena.ne.jp/ajishixo/20110814/1313320358
リンク元
- 1 http://www.google.co.jp/search?as_q=screen+window+環境変数 引き継ぐ&hl=ja&num=100&btnG=Google+検索&as_epq=&as_oq=&as_eq=&lr=&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_d
- 1 http://www.google.co.jp/search?q=screen+hardstatus+alwayslastline&hl=ja&client=firefox-a&hs=UfZ&rls=org.mozilla:ja:official&prmd=ivns&source=lnms&tbm=blg&ei=OEpcTu3lDMHbmAXi1eUh&sa=X&oi=mode_link&ct=mode&cd=8&ved=0CBIQ_AUoBw&prmdo=1
- 1 http://www.google.co.jp/search?q=windows+環境変数+引き継ぎ&hl=ja&source=hp&biw=945&bih=691&gs_sm=e&gs_upl=1969l14469l0l15422l37l31l0l12l0l1l235l2561l4.11.3l18l0&oq=windows+環境変





