簡體   English   中英

如何通過運行腳本讓我的所有終端/ shell重新加載他們的環境?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM