cheniel
cheniel

Reputation: 3561

Change bash prompt depending on if environment variable is set

I'm trying to make a PS1 which changes when an environment variable is set

I've tried these two ways without success:

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\] "

And

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\] "

Setting the environment variable and re-sourcing .bashrc updates the prompt though.

Upvotes: 1

Views: 1117

Answers (1)

user3266190
user3266190

Reputation:

try this:

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 $"

demo

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

Upvotes: 5

Related Questions