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>