bug-bash
[Top][All Lists]
Advanced

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

Re: [bug] Home dir in PS1 not abbreviated to tilde


From: Roman Rakus
Subject: Re: [bug] Home dir in PS1 not abbreviated to tilde
Date: Tue, 13 Mar 2012 16:18:21 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.1) Gecko/20120209 Thunderbird/10.0.1

On 03/13/2012 04:08 PM, dethrophes wrote:
Am 13.03.2012 06:04, schrieb Clark J. Wang:
On Mon, Mar 12, 2012 at 12:22, Yongzhi Pan<panyongzhi@gmail.com>  wrote:

Tested in GNU bash, version 3.00.16(1)-release and 4.1.2(1)-release.

Upon login, home dir is displayed as tilde in PS1:
pan@BJ-APN-2 ~$ echo $PS1
\[\033[35m\]\u@\h \w$ \[\033[0m\]
pan@BJ-APN-2 ~$ pwd
/export/home/pan/

After a cd command, which change directory to $HOME (not changed at all),
it is displayed as the complete path:
pan@BJ-APN-2 ~$ cd
pan@BJ-APN-2 /export/home/pan$

The reason is that my home in passwd has a trailing slash:
pan@BJ-APN-2 /export/home/pan$ grep ^$USER: /etc/passwd
pan:x:896:1::/export/home/pan/:/bin/bash

You can also reproduce this by directly setting HOME to
`/export/home/pan/'.


This is tricky to find. I hope it will display tilde even if home dir entry
in passwd has one or more trailing slash.

I personally don't think this needs to be fixed. :)
I agree, or to be more acurate I think you should fix the passwd entry.
PS: I read the source code and do not know where this is done, maybe in
y.tab.c?


as a workaround to your problem you could have something like this in your bashrc
if shopt extglob &>/dev/null ; then
  HOME="${HOME/%+(\/)}"   # strip all trailing forward slashes
else
   while [ "${HOME}" != "${HOME%\/}" ] ; do
     HOME="${HOME%\/}"
   done
fi

I think it should hide your problem.




Is it all necessary?
HOME="${HOME%\/}"

RR



reply via email to

[Prev in Thread] Current Thread [Next in Thread]