Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 May 2012 10:51:03 +0200
From:      Polytropon <freebsd@edvax.de>
To:        Reed Loefgren <rloefgren@forethought.net>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: CSH prompt
Message-ID:  <20120514105103.532295af.freebsd@edvax.de>
In-Reply-To: <4FAFC253.5000200@forethought.net>
References:  <4FAFAF7F.4010409@webrz.net> <20120513152509.09dbfc10.freebsd@edvax.de> <4FAFC253.5000200@forethought.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 13 May 2012 08:16:51 -0600, Reed Loefgren wrote:
> On 05/13/12 07:25, Polytropon wrote:
> > On Sun, 13 May 2012 14:56:31 +0200, Jos Chrispijn wrote:
> >> In cshell I use this prompt: set prompt = "%B[%@]%b %m[%/]>  "
> >> The problem I face now is that if I use this prompt with symbolic links,
> >> the presented location is displaying the symbolic link rather than the
> >> real directory name.
> >> Is there a way of preventin this?
> > Yes, a very ugly way which I just found out:
> >
> > 	alias precmd 'set WD=`pwd`; set prompt = "%B[%@]%b %m[$WD]>  "'
> >
> > Example:
> >
> > 	[3:21pm] r56[/]>  cd /sys
> > 	[3:21pm] r56[/usr/src/sys]>  _
> >
> > It redefines the whole prompt at any command that could
> > affect the current working directory (not only "cd" can
> > do that). This is needed as any call to `pwd` stored into
> > a variable will only affect $prompt once - this is when
> > it's set, only at this time $WD would be evaluated. So
> > that's why this strange command. :-)
> >
> > Oh, and I just improved it. How about this?
> >
> > 	alias precmd 'set prompt = "%B[%@]%b %m[`pwd`]>  "'
> >
> > Much better. :-)
> 
> I've butchered it further, but thanks for doing the *real* work:
> 
> user:
> alias precmd 'set prompt = "\n%{\033[32m%}%m [%h] [%@]%b%{\033[0m%} 
> [`pwd`]$ "'
> 
> root:
> alias precmd 'set prompt = "\n%{\033[31m%}%m [%h] [%@]%b%{\033[0m%} 
> [`pwd`]$ "'

Allow me a final note:

It's "normal" to denote non-root access with % (for csh) or $ (for
sh, bash and many others), and root access with #. You can easily
configure that to be automatically instead of $ if you like.

Example:

	set promptchars = "%#"
	set prompt = "%n@%m:%~%# "

For root, # will appear at the end, and % for non-root. Of course,
you can easily apply this to your setting if you like, and you can
define other characters if needed (e. g. "$#" or ">#").

Even though in your prompt shown above, root is shown by red color,
that important attribute _might_ be missing when using a non-color
terminal or a misconfigured emulator, so the user might not be
aware of the immense power currently active (as no user name is
shown in the prompt). Maybe this inspiration is useful to you.




-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120514105103.532295af.freebsd>