我使用屏幕,有时我会更改.bashrc配置文件。因此,我想将.bashrc更改应用于所有屏幕窗口。不幸的是,屏幕只为创建新窗口读取配置文件,而不会为现有窗口重新加载.bashrc。
我的屏幕会话有一个或多个窗口。在附加屏幕之前,我想为每个窗口执行命令。命令是简单的"source~/.bashrc".
我尝试:
screen -X stuff "source ~/.bashrc"`echo -ne ' 15'`
它只适用于一个窗口。因此,我无法使用"prev"或"next"命令在屏幕窗口中进行迭代。
我已经阅读了屏幕人,文档,我会尝试搜索我的问题的解决方案:)
你能告诉我正确的方向吗?或者可能有人已经解决了类似的问题?
如果您使用的是最新版本的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是默认值。