36

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.

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

4 Answers 4

51

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).

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

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
  • 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
    Commented Dec 22, 2020 at 22:25
1

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

/usr/local%

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
/Users/7stud
% cd erlang_programs 
~/erlang_programs% pwd
/Users/7stud/erlang_programs
~/erlang_programs% cd /opt/local
/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.

1

In my opinion

PS1='%~: '

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

PS1='%~ $: '

is also pretty good.

2
  • 2
    Welcome to SuperUser! How is this better than the accepted answer from eight years ago? Commented 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
    Commented Aug 31, 2022 at 19:36

You must log in to answer this question.

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