How do I change my $PS1 on a Macbook for oh-my-zsh?

BashZshZshrcOh My-Zsh

Bash Problem Overview


I'm trying to find the PS1 variable in oh-my-zsh and change it so iTerm doesn't look as clogged up. Running the following command:

echo $PS1

gives me this

%{%f%b%k%}$(build_prompt)    

Additionally, I've attempted to edit the .zshrc file and put

export PS1="random-text"

but it didn't work. I've tried to look around for the PS1 variable, but couldn't locate it.

If it also helps, I'm running El Capitan on my laptop right now. I couldn't find any similar questions to what I posted so any help would be greatly appreciated.

Bash Solutions


Solution 1 - Bash

Changing your Theme:

To edit your prompt in oh-my-zsh you need to edit a PROMPT variable in your theme instead of PS1. In your .zshrc file you will find a line that looks something like this:

ZSH_THEME="themename"

oh-my-zsh stores these themes in the ~/.oh-my-zsh/themes folder. If you ls ~/.oh-my-zsh/themes you will see a list of themes that you can change. The above theme would be named themename.zsh-theme in this directory.

Customizing your Theme:

If you want a simple way to customize your oh-my-zsh theme you can copy a file already in this theme folder and edit that.

To change your prompt simply edit the PROMPT variable. For example:

PROMPT=">>"

This would make two >'s your prompt.

I like editing the already existing simple theme. the simple.zsh-theme file looks like this:

PROMPT='%{$fg[green]%}%~%{$fg_bold[blue]%}$(git_prompt_info)%{$reset_color%} '

ZSH_THEME_GIT_PROMPT_PREFIX="("
ZSH_THEME_GIT_PROMPT_SUFFIX=")"
ZSH_THEME_GIT_PROMPT_DIRTY=" ✗"
ZSH_THEME_GIT_PROMPT_CLEAN=" ✔"

Applying the Changes:

Now just change the theme in your in your .zshrc file:

ZSH_THEME="simple"

And reload oh-my-zsh with:

. ~/.zshrc

Solution 2 - Bash

Important update 1st July, 2021. I saw devote for this answer from yesterday. So the below command might not work anymore. Just try POWERLEVEL10K now.

For POWERLEVEL9K if you're using it

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)

PS: Try POWERLEVEL10K, it's much better. trust me

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDaniel DaoView Question on Stackoverflow
Solution 1 - BashCaleb AdamsView Answer on Stackoverflow
Solution 2 - BashAlvin SmithView Answer on Stackoverflow