28

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
    Aug 3, 2016 at 20:16

4 Answers 4

38

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
    Dec 18, 2018 at 20:04
29

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
    Dec 22, 2020 at 22:25
0

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.

0

In my opinion

PS1='%~: '

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

PS1='%~ $: '

is also pretty good.

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

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.