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

che*_*iel 1 bash .bash-profile

我正在尝试制作一个在设置环境变量时会发生变化的 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\] "
Run Code Online (Sandbox Code Playgroud)

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\] "
Run Code Online (Sandbox Code Playgroud)

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

小智 5

尝试这个:

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 $"
Run Code Online (Sandbox Code Playgroud)

演示

2 $
checking TEST-var
TEST is empty!
2 $export TEST="hello"
checking TEST-var
TEST is not empty
1 $
Run Code Online (Sandbox Code Playgroud)