[lug] cp and rm

Tom Tromey tromey at redhat.com
Wed Aug 1 18:24:24 MDT 2001

>>>>> "David" == David  <dajo at frii.com> writes:

David> To consider the problem, reflect on this code snippet and the result.
David> type cp
David> unalias cp
David> type cp
David> cp is aliased to `cp -i'
David> cp is /bin/cp
David> copying to Archive2
David> cp: overwrite `/Archive2/home/bozo/.Xdefaults'? 

I found this interesting, so I looked into it.  I think it is a bash
bug.  Either that, or it is a weird feature and I don't understand how
bash works here.

The unalias only fails if the sequence above occurs in a shell function.
Consider this:

    creche. touch foo bar
    creche. alias cp='cp -i'
    creche. cp foo bar
    cp: overwrite `bar'? y
    creche. unalias cp
    creche. cp foo bar
    creche. alias cp='cp -i'
    creche. doit ()
    > {
    > type cp
    > unalias cp
    > type cp
    > cp foo bar
    > }
    creche. doit
    cp is aliased to `cp -i'
    cp is hashed (/bin/cp)
    cp: overwrite `bar'? y

This bug is in RH 6.2 (bash 1.14) and RH 7.0 (bash 2.04).
I don't think this problem has anything to do with Red Hat per se.


More information about the LUG mailing list