In bash I have my PROMPT set like so

PS1="$(scutil --get ComputerName) \W\\$ "

Where I only see the computer name and only the name of the current directory that I am in, not the full path and a $ sign.

my-computer my-folder$

My question is how can I set up my zsh prompt to be just like the bash one. I've been googling around, but the solutions I've found are not exactly what I am looking for.

  • Have you tried PS1='\h \W\$ ' in bash?
    – creidhne
    Aug 3, 2016 at 20:16

4 Answers 4


See the EXPANSION OF PROMPT SEQUENCES and SIMPLE PROMPT ESCAPES sections of the zsh manual page at man zshmisc.

This prompt string, PS1='%m %1d$ ', displays the machine name (%m) and the trailing component of the current path (%1d).

  • 3
    man page are always good help indeed :) using %~ to have prompt with home replaced by ~.
    – nolazybits
    Dec 18, 2018 at 20:04

The best version of the combinations that works for me is this:

PS1='%n@%m %~$ '

%n is the user logged in

%m is the machine name

%~ gives the path relative to HOME, if path begins with HOME.

This is how it is for me:

This is how it is for me

The man page has more info. I tried to put in simpler terms here.! :D

  • 1
    Thanks! This is the true equivalent to the bash version. The other answer (%1d) only shows the lowest hierarchy in the directory structure.
    – JJLL
    Dec 22, 2020 at 22:25

In my opinion

PS1='%~: '

anywhere in ~/.zshrc is the cleanest / simplest.

PS1='%~ $: '

is also pretty good.

  • Welcome to SuperUser! How is this better than the accepted answer from eight years ago? Aug 4, 2022 at 11:31
  • It's structurally / basically the same, but provides two shortcuts for people who want the most simple / minimal exact code to make the Zsh prompt look like bash
    – Benji
    Aug 31, 2022 at 19:36

To show only the directory followed by a % sign, e.g.:


Put the following in ~/.zshrc (create the file if it doesn't exist):

PROMPT='%~%# '

%~ displays the current directory, but your HOME directory will be replaced by a ~:

/usr/local% cd
~% pwd
% cd erlang_programs 
~/erlang_programs% pwd
~/erlang_programs% cd /opt/local

That keeps the prompt short and sweet.

The docs say that %# will display a % sign, but if you are using privileges, e.g. with the su command, then it will display a # sign. When I use sudo, it still displays a % sign.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .