如何通过运行脚本让我的所有终端/ shell重新加载他们的环境?

Tom*_*Tom 2 macos bash terminal profile reload

我在家里和工作中使用我的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
Run Code Online (Sandbox Code Playgroud)

f4m*_*4m8 9

您应该使用SIGUSR1之类的信号.首先启用信号重新加载〜/ .profile trap ". ${HOME}/.profile" SIGUSR1.

之后你应该发送SIGUSR1信号的所有shell.例如,pkill -SIGUSR1 bash如果bash是使用过的shell.

  • 哇.太棒了 +1 (2认同)