I enter in zsh:

% PS1=">>> "

But for some reason, the prompt is still the same:

% echo $PS1
%B%F{red}%(?..%? )%f%b%B%F{blue}%n%f%b@%m %B%40<..<%~%<< %b%# 

Same thing with PROMPT.

It works well in bash and sh. How do I fix it?

  • Do you have perhaps some pre- or post-command hook that's overwriting your PS1? – DopeGhoti Feb 4 '19 at 19:40
  • I'm not sure what a hook is, I'm gonna check – Cansico Feb 4 '19 at 19:41
  • Oh-my-zsh isnt installed, neither a zsh theme configuration – Cansico Feb 4 '19 at 20:09
  • Run zsh -f, and then try. It will invoke new shell without looking into any initialization files. If that works then it means some part of your startup file overwrites the prompt (preexec and precmd functions are the most suspicious here). – jimmij Feb 4 '19 at 22:58
  • Also interesting is that the PS1 shown does not produce a single % as shown. – JdeBP Feb 4 '19 at 23:18

The precmd function (which is run before displaying a new prompt) was resetting the prompt. All I had to do was:


(this removes all precmd "hook functions")

... and then I was able to change PS1. It's possible to change it permanently by adding this line to ~/.zshrc file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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