Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 03 Aug 1998 17:37:45 -0700
From:      Studded <Studded@dal.net>
To:        Sascha Schumann <sas@schell.de>
Cc:        William Woods <wwoods@cybcon.com>, "freebsd-questions@FreeBSD.ORG" <freebsd-questions@FreeBSD.ORG>
Subject:   Re: BASH prompt question
Message-ID:  <35C657D9.4B2577D4@dal.net>
References:  <Pine.LNX.3.96.980803142023.11763B-100000@www.schell.de>

next in thread | previous in thread | raw e-mail | index | archive | help
Sascha Schumann wrote:
> 
> On Sun, 2 Aug 1998, William Woods wrote:
> 
> > I would like to make my bash prompt show a little more info, like what dir the
> > user is in. How would I do this?
> 
> Edit /etc/profile and insert at the end:
> 
> test "$SHELL" = "/bin/bash" && test -e ~/.bashrc && source ~/.bashrc

	Why are you inserting a test to accomplish something that bash does by
default? 

> PS1='\u@\h:`pwd -P` $ '
> export PS1

	Again, working too hard. :)  Why call a shell function every time you
hit return?  The following accomplishes what you have there, and adds
your correction for the \$:

export PS1='\u@\h: \w \$'

This syntax is available in bash 2 and above, but you should be using
bash 2 anyway. :)

	If you're using xterm I use the following prompt to add information to
my title bar, put user@ME (which is my machine, since I log into a lot
of different ones) and the current working directory on one line, and
the actual prompt below that since I like the full path in the prompt
but it can get too long.

if [ $TERM = xterm ]; then
export PS1='\[\e]1;My Desk\a\e]2;$PWD\a\][\u@ME \w]\n \#\$ '
else
export PS1='[\u@ME \w]\n \#\$ '
fi

	You can parse the line that works for xterm's as follows:

\[ - start a sequence of non-printing characters

\e]1;My Desk\a
\e - an ASCII escape character (033)
]1; - xterm'ism for the name of the icon
	(works for wm's like afterstep)
My Desk - literal text string
\a - an ASCII bell character (07)
	This ends the first xterm sequence

\e]2;$PWD\a
In the second xterm sequence I like to use $PWD rather than \w because
otherwise it puts '~' in the title when you use just 'cd' to return to
your home. 

\] - ends the non-printing character part of the prompt. 

[\u@ME \w]
[ - literal [ character
\u - the username of the current user
@ME - literal characters
\w - the current working directory
] - literal ] character

\n - newline
\# - the command number of this command
\$ - if  the effective UID is 0, a #, otherwise a $

Example while I'm in my home directory:
[myusername@ME ~]
 22$ 

Another example:
[myusername@ME /usr/ports/shells/bash2]
 23$ 

Here's some info from misc.c in xterm's source about the escape codes
for the title and icon:

        case 0: /* new icon name and title*/
        case 1: /* new icon name only */
        case 2: /* new title only */

	This may be more details than the original poster wanted, but the goal
is to show what's possible. Some people have implemented colored prompts
using ansi escape codes, but I haven't gotten that obsessed yet. :)

Hope this helps,

Doug
-- 
***           Chief Operations Officer, DALnet IRC network          ***

When you don't know where you're going, every road will take you there.
     - Yiddish Proverb

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?35C657D9.4B2577D4>