NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: PS1 and other things for superuser



    Date:        Mon, 15 Dec 2025 22:32:02 +0000 (UTC)
    From:        RVP <rvp%SDF.ORG@localhost>
    Message-ID:  <93221fdc-529a-dcaf-051b-ce11bbbb11c3%SDF.ORG@localhost>

  | Note that there's no '\n' in that PS1. Don't know how to get a literal '\n'
  | into PS1.

Well, the obvious way, based upon the way you did it, would be:

PS1='
$(date +"%a %b %e  %H:%M:%S")
${PSlit}$(tput bold setaf 1)${PSlit} $USER@$(hostname) $(pwd) ${PSlit}$(tput sgr0)${PSlit} # '

(Inside a quoted string, '' "" or $'' forms, a newline is just a character,
no different than any other character - except for "" and $'' forms, if it
is preceded by a '\'.)

Or you could use $'' instead of '' and get

PS1=$'\n$(date +"%a %b %e  %H:%M:%S")\n${PSlit}$(tput bold setaf 1)${PSlit} $USER@$(hostname) $(pwd) ${PSlit}$(tput sgr0)${PSlit} # '

Also, if you're going to use cmdsubs, and $(pwd) instead of $PWD,
and $(hostname) instead of $HOSTNAME you may as well do as requested as:

PS1=$'\n$(date +"%a %b %e  %H:%M:%S")\n${PSlit}$(tput bold setaf 1)${PSlit} $USER@$(hostname -s) $(case $PWD in /) printf /;; "$HOME"*) printf %s \~"${PWD#"${HOME}"};; *) printf %s "${PWD}";; esac) ${PSlit}$(tput sgr0)${PSlit} # '

I wonder what the difference between tput setaf and tput setf is ?

And while I am here, in the example I cut & pasted from sh's man page,
I didn't notice that mandoc had inserted \u00A0 chars instead of spaces.
Why it does that when outputting to a terminal I have no idea, a space
is a space to a terminal, unbreakable or breakable makes no difference
to it (it makes a difference to things which will reformat the output,
terminals don't do that.)

Anyway, those unbreakable spaces should be just ordinary ones in any
use of that example.

When I cut & pasted it, they looked like ordinary spaces to me!

kre



Home | Main Index | Thread Index | Old Index