Intellij:如何从现有流程更新运行配置环境?

时间:2017-05-02 13:54:39

标签: java shell intellij-idea

我想从现有/正在运行的进程(从PID中选择)更新给定运行/调试配置的环境变量。

有插件吗?我在jetbrain存储库中找不到这样的东西。

什么方便(没有var,值对手动复制;没有intellij restart)解决方案可以更新这些环境变量吗?

1 个答案:

答案 0 :(得分:0)

为了获得这些功能,我写了一个适用于Linux的bash函数。

idea_run_env()
{
  typeset rcf=${1}
  if ! [ -f "$rcf" ]; then
      echo "Can not find run configuration file '$rcf'" 1>&2*
      return 2
  fi
  typeset rcf_back=${rcf}.bak
  if (( $# > 1 )); then
    typeset pid=${2}
    # no Esc in attr value, I may/should escape/encode such values but I won't use them
    typeset to_be_bloc=$(xargs -n 1 -0 printf "%s\n" < /proc/$pid/environ | grep -a -v -E $'\e' | while IFS='=' read k v; do echo '<env name="'$k'" value="'$v'" />'; done)
    if [ -z "$to_be_bloc" ] ; then
      echo "Can not find environment for given PID '$pid'" 1>&2*
      return 2
    fi
    #typeset was_block=$(sed -e '/<envs>/,/<\/envs>/{//!b};d' "$rcf")
    typeset prefix=$(sed -e '/<envs>/q' "$rcf")
    typeset postfix=$(sed -n -e '/<\/envs>/,$p' "$rcf")
    [ -f "$rcf_back" ] || mv "$rcf" "$rcf_back"
    echo "${prefix}" > "$rcf"
    echo "${to_be_bloc}" >> "$rcf"
    echo "${postfix}" >> "$rcf"
  elif [ -f "$rcf_back" ]; then
    mv -f  "$rcf_back" "$rcf"
  else
    echo "Can not find backup to restore" 1>&2
    return 1
  fi
}