2012-08-31 226 views
0

我使用屏幕,有時我更改我的.bashrc配置文件。因此,我想爲所有屏幕窗口應用.bashrc更改。不幸的是,屏幕讀取配置文件僅用於創建新窗口,並且不會爲現有窗口重新加載.bashrc。對屏幕上的所有窗口執行命令

我的屏幕會話有一個或多個窗口。在附加屏幕之前,我想爲每個窗口執行命令。該命令很簡單,就是「source〜/ .bashrc」。

我嘗試:

screen -X stuff "source ~/.bashrc"`echo -ne '\015'` 

它完美地工作只爲一個窗口。所以我不能使用「prev」或「next」命令遍歷屏幕窗口。

我已經閱讀屏幕上的人,文檔,我的事件嘗試搜索我的問題:)

你能告訴我正確的方向的解決方案?或者也許有人已經解決了類似的問題?

回答

1

如果您使用的是最新版本的screen,則可以使用-Q選項,請參閱original threadthis answer。這個作品在這裏:

screen -Q windows | sed 's/[^0-9]*/\n/g; s/^\n//g' \ 
| while read; do 
    screen -S test -p $REPLY -X stuff "source ~/.bashrc"$'\n' 
    done 

有了:

$ screen --version 
Screen version 4.01.00devel (GNU) 2-May-06 

注意,如果您有多個會話,用-S他們的名字。在這種情況下,我正在與一個名爲test的會話進行合作。 -p告訴屏幕哪個窗口發送命令。

還請注意使用ANSI-C quoting$'\n')。

-Q命令執行時,等待秒通過設置msgwait爲零運行命令,解決此工作之前和執行即

screen -S test -X msgwait 0 
... 
screen -S test -X msgwait 5 

5後重置爲默認值。

+0

Thx!我的屏幕版本是4.00.03jw4。我不使用屏幕名稱,因爲我使用了「屏幕-RR」(請參閱​​[在SSH登錄時自動啓動SCREEN](http://pascal.nextrem.ch/2010/04/30/automatically-start-screen-on-ssh-login /))。但是,我沒有更多的一個屏幕會話。我會嘗試使用新版本的屏幕和您的解決方案。也許它節省了一天:) – hevil