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: Eric Blake
Subject: Re: [bug] Home dir in PS1 not abbreviated to tilde
Date: Tue, 13 Mar 2012 10:53:10 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.1) Gecko/20120216 Thunderbird/10.0.1

On 03/13/2012 09:47 AM, dethrophes wrote:
> Am 13.03.2012 16:42, schrieb Eric Blake:
>> On 03/13/2012 09:27 AM, Eric Blake wrote:
>>> Be aware that both approaches will misbehave if HOME is a root directory
>>> (/ or //), where you _don't_ want to strip trailing slashes.  So you
>>> really want:
>>>
>>> case $HOME in
>>>    *[^/]* ) HOME=${HOME%${HOME##*[^/]}} ;;
>>> esac
>> Actually, shortening /// to / is okay (it's only // that must not
>> unconditionally be shortened to /, due to POSIX specification and Cygwin
>> behavior of //), so a modified version would be:
>>
>> case $HOME in
>>    *[^/]* ) HOME=${HOME%${HOME##*[^/]}} ;;
>>    / | // ) ;;
>>    *) HOME=/ ;;
>> esac
>>
> wouldn't this be better?
> 
> case "$HOME" in
>   / | // ) ;;
>   * ) HOME="${HOME%${HOME##*[^/]}}" ;;
> esac

Nope, because that strips /// into the empty string, but you really want
it collapsed into the single slash.

Also, I intentionally omitted the redundant "" around the variable
assignment.

-- 
Eric Blake   eblake@redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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