为什么我的 bash 终端启动会运行同一组命令两次?

为什么我的 bash 终端启动会运行同一组命令两次?

我使用的是 Mac,每当我启动终端应用程序时,初始启动都会打印以下内容:

Picked up _JAVA_OPTIONS: -XX:MaxPermSize=4G -Xmx4G
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=4G; support was removed in 8.0
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)
Picked up _JAVA_OPTIONS: -XX:MaxPermSize=4G -Xmx4G
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=4G; support was removed in 8.0
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)

它似乎加载了两次 Java,我不知道为什么。我认为这是来自我的 ~/.bash_profile 文件,但我似乎找不到它的作用。这是我的bash_profile

export AD_USERNAME=myfirstname.mylastname
    yodle_dev_include_repo_prompt=1
    source $HOME/.dev-shell-utils/conf/sh/all
    export GRADLE_OPTS="-Dfile.encoding=UTF-8"
    if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

    # Instead of modifying your local .bash_profile, consider updating dev-shell-utils instead.
    # TODO: Move the following into dev-shell-utils.

    removeFromPath ()
    {
        export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
    }

    setHaProxyAlias ()
    {
        sudo ifconfig lo0 alias 172.17.32.1
    }

setjdk 1.8
    # Prefer Homebrew installed utils
    PATH=$PATH:$(brew --prefix coreutils)/libexec/gnubin
    MANPATH=$(brew --prefix coreutils)/libexec/gnuman:$MANPATH

    PATH=$PATH:/workspace/src/core/ThriftTools/Thrift/bin

export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "
export CLICOLOR=1
export LSCOLORS=ExFxBxDxCxegedabagacad
alias ls='ls -GFh'

以为这可能是我的bashrc文件,但似乎所做的只是设置一些别名和环境变量。

alias readlink="greadlink"
alias jbossrun="sudo /usr/local/jboss/bin/run.sh -b 0.0.0.0 -DSERVICE_DISCOVERY=true"
export _JAVA_OPTIONS="-XX:MaxPermSize=4G -Xmx4G"
export JBOSS_HOME=/usr/local/jboss
export PATH=/usr/local/bin:$PATH

当我启动 bash 终端时,有什么想法可能导致这种双重打印输出吗?我在用着但默认的 Mac 终端应用程序和 iTerm 也会发生这种情况。

谢谢你的帮助!

答案1

您显示的代码中没有任何内容会打印您显示的任何输出,因此它一定来自您未显示的某些部分。

您应该能够通过以下信息自己找到罪魁祸首,或者至少隔离出一个小的有问题的部分:

  • 在 macOS 上,每个终端默认打开一个登录 shell。
  • 当 bash 作为登录 shell 启动时,它会执行来自~/.bash_profile.
  • 放在set -x顶部.bash_profile,bash 将在执行每个命令之前打印每个命令的跟踪信息。它看起来像这样:
    + export AD_USERNAME=myfirstname.mylastname
    + AD_USERNAME=myfirstname.mylastname
    + yodle_dev_include_repo_prompt=1
    + source /home/intA/.dev-shell-utils/conf/sh/all
    
    因此,请检查哪些命令打印了这个不需要的输出。

相关内容