1

我使用屏幕,有时我会更改我的 .bashrc 配置文件。因此,我想对所有屏幕窗口应用 .bashrc 更改。不幸的是,屏幕读取配置文件仅用于创建新窗口,并且不会为现有窗口重新加载 .bashrc。

我的屏幕会话有一个或多个窗口。在附加屏幕之前,我想为每个窗口执行命令。该命令很简单“source ~/.bashrc”。

我尝试:

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

它仅适用于一个窗口。所以我不能使用“prev”或“next”命令遍历屏幕窗口。

我已经阅读了屏幕人,文档,并且我尝试搜索我的问题的解决方案:)

你能指引我正确的方向吗?或者也许有人已经解决了类似的问题?

4

1 回答 1

2

如果您使用的是最新版本,screen则可以使用该-Q选项,请参阅原始线程此答案。这在这里有效:

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 引用( $'\n') 的使用。

-Q命令执行时,在运行命令之前screen等待msgwait几秒钟,通过设置为零来解决这个问题msgwait并在执行后将其重置,即

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

5 是默认值。

于 2012-08-31T17:46:50.397 回答