[英]How do I get all my terminals/shells to reload their environment by running a script?
我在家里和工作中使用我的mac。 我使用一個名為Marco-polo的程序來檢測我是在家還是在工作。 通過這個,我可以讓它運行一個腳本來更改我的代理並運行一些腳本來為不同的環境配置我的計算機,例如將hosts.work和hosts.home復制到/ etc / hosts並復制.profile.work和。 profile.home over~ / .profile。
到目前為止我無法成功完成的工作是找到一種方法讓我的所有運行終端在我改變位置時重新加載我的.profile文件。 有誰能建議這樣做的方法?
謝謝,湯姆
下面的fm48回答結合這個簡單的腳本(放在/ usr / bin / pkill)工作得很好。
#!/bin/sh
sig=""
if [[ "$1" =~ - ]]; then
sig=$1;
shift
fi
for X in `ps acx | grep -i $1 | awk {'print $1'}`; do
kill $sig $X;
done
您應該使用SIGUSR1之類的信號。 首先啟用信號以使用trap ". ${HOME}/.profile" SIGUSR1
重新加載〜/ .profile。
之后你應該發送SIGUSR1信號的所有shell。 例如,如果bash是使用過的shell,則為pkill -SIGUSR1 bash
。
如果您將Screen作為終端管理器,則可以使用以下命令向所有shell發送命令:
screen -X at \\# stuff "whatever command\\n"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.