On Mon, Feb 27, 2012 at 5:11 AM, Darrell Anderson <humanreadable@...> wrote: > Update starttde consistent with the changes made to tdelibs/tdesu/stub.cpp in bug report 766. > > The first snippet that is deleted is redundant and conflicts with the same $PATH test several lines later in the script. > > The second change ensures $PATH is consistent with stub.cpp, which places $PREFIX/bin in the path order just before /usr/bin and not blindly as first in the search path. If, oddly, /usr/bin is not in the search path then the script falls back to placing $PREFIX/bin first in the search path. > > ============================================================== > diff -urN tdebase/starttde tdebase.new/starttde > --- tdebase/starttde 2012-02-15 13:26:30.000000000 -0600 > +++ tdebase.new/starttde 2012-02-26 19:08:44.000000000 -0600 > @@ -76,15 +76,6 @@ > fi > fi > > -# In case we have been started with full pathname spec without being in PATH. > -bindir=`echo "$0" | sed -n 's,^\(/.*\)/[^/][^/]*$,\1,p'` > -if [ -n "$bindir" ]; then > - case $PATH in > - $bindir|$bindir:*|*:$bindir|*:$bindir:*) ;; > - *) PATH=$bindir:$PATH; export PATH;; > - esac > -fi > - > # Boot sequence: > # > # tdeinit is used to fork off processes which improves memory usage > @@ -165,7 +156,14 @@ > fi > if [ -d $TDEDIR/bin ]; then > if [ -z "`echo $PATH | grep \"$TDEDIR/bin\"`" ]; then > - export PATH=$TDEDIR/bin:$PATH > + # Respect the traditional path order. Don't blindly place $TDEDIR/bin > + # first in the path. Only place $TDEDIR/bin before /usr/bin. This order is > + # consistent with tdelibs/tdesu/stub.cpp. > + if [ -n "`echo $PATH | grep \"/usr/bin\"`" ]; then > + export PATH="`echo $PATH | sed \"s|/usr/bin|$TDEDIR/bin:/usr/bin|\"`" > + else > + export PATH=$TDEDIR/bin:$PATH > + fi > fi > fi > if [ -d $TDEDIR/share ]; then > ============================================================== > > I have tested the change. If there are no objections then I would like to push the patch. > > The patch has bug. Consider $PATH first containing something like '/home/me/opt/usr/bin'. Or even that '/usr/bin_strange_backup'. It must check that '/usr/bin' string is final. That is done with check if it is in begin of string or have ':' in front and it is in end of string or have ':' in back.