我使用屏幕,有时我会改变我的.bashrc个人资料。因此,我想对所有屏幕窗口应用.bashrc更改。不幸的是,屏幕读取仅用于创建新窗口的配置文件,并且不会为现有窗口重新加载.bashrc。
我的屏幕会话有一个或多个窗口。在附加屏幕之前,我想为每个窗口执行命令。命令很简单“source~ / .bashrc”。
我试试:
screen -X stuff "source ~/.bashrc"`echo -ne '\015'`
它仅适用于一个窗口。所以我无法使用“prev”或“next”命令迭代屏幕窗口。
我已经阅读了屏幕上的man,docs,而且我的事件尝试搜索我的问题的解决方案:)
你能指导我正确的方向吗?或者也许有人已经解决了类似的问题?
答案 0 :(得分:1)
如果您使用的是最新版本的screen
,则可以使用-Q
选项,请参阅original thread和this 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
命令时,screen
在运行命令之前等待msgwait
秒,通过将msgwait
设置为零并在执行后重置它来解决此问题,即
screen -S test -X msgwait 0
...
screen -S test -X msgwait 5
5是默认值。