根据是否设置了环境变量更改 bash 提示

Change bash prompt depending on if environment variable is set

我正在尝试制作一个 PS1,它会在设置环境变量时发生变化

我试过这两种方法都没有成功:

PS1_EMOJI=
update_ps1_emoji() {
  if [ "$ENV_VAR" != "" ]; then
    PS1_EMOJI=
  fi
}

PROMPT_COMMAND='update_ps1_emoji'
export PS1="\[\e[0;35m\]$PS1_EMOJI [\W]$?\[\e[m\e[0;31m\]$\[\e[m\] "

ps1_emoji() {
  if [ "$ENV_VAR" != "" ]; then
    echo -n ""
  else
    echo -n ""
  fi
}
export PS1="\[\e[0;35m\]`ps1_emoji` [\W]$?\[\e[m\e[0;31m\]$\[\e[m\] "

设置环境变量并重新获取 .bashrc 会更新提示。

试试这个:

export PS1_EMOJI=1
ps1_emoji() {
    echo "checking TEST-var"
    if [ -z "$TEST" ]; then
        echo "TEST is empty!"
        export PS1_EMOJI=2
    else
        echo "TEST is not empty"
        export PS1_EMOJI=1
    fi
}
PROMPT_COMMAND='ps1_emoji'

export PS1="$PS1_EMOJI $"

演示

2 $
checking TEST-var
TEST is empty!
2 $export TEST="hello"
checking TEST-var
TEST is not empty
1 $