Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Is there a way to set variables in the precmd function of zsh and then echo them in the prompt?

Something like

function precmd {
   GREETING='Hi Kevin!';
}

PROMPT="$GREETING";
share|improve this question
add comment

1 Answer

up vote 3 down vote accepted

Put this in your .zshrc:

setopt prompt_subst
PROMPT='$GREETING'

Then $PROMPT will undergo parameter expansion (as well as its siblings command substitution and arithmetic expansion) each time it's displayed. Take care to quote anything that gets included from an outside source properly. Also note that the result of the $ expansion will undergo % expansion (i.e. prompt escape sequences can appear in $GREETING).

An alternate approach is to reset the PROMPT variable itself in precmd, but this makes it harder to customize the prompt in a specific shell instance.

share|improve this answer
2  
It turns out that having double quotes was presenting a problem. Once I changed to single quotes around the PROMPT I got the function to update fine. –  Kevin Burke Feb 20 '12 at 2:28
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.