Wrong expansion of ~/

Morten Kjærulff mortenkjarulff@gmail.com
Fri Aug 28 06:29:47 GMT 2020


On Thu, Aug 27, 2020 at 7:59 PM Thomas Wolff wrote:
>
> Am 27.08.2020 um 18:49 schrieb rifter via Cygwin:
> > On 8/27/20, Morten Kjærulff via Cygwin <cygwin@cygwin.com> wrote:
> >> On Tue, Aug 25, 2020 at 3:00 PM Brian Inglis wrote:
> >>> On 2020-08-25 01:15, Morten Kjærulff via Cygwin wrote:
> >>>> On Mon, Aug 24, 2020 at 10:41 PM Brian Inglis wrote:
> >>>>> On 2020-08-24 06:36, Morten Kjærulff via Cygwin wrote:
> >>>>>> On Mon, Aug 24, 2020 at 11:52 AM Thomas Wolff wrote:
> >>>>>>> Am 24.08.2020 um 10:05 schrieb Morten Kjærulff via Cygwin:
> >>>>>>>> I have a script that starts several tmux panes with my favorite
> >>>>>>>> commands.
> >>>>>>>> In some (*some* and only *sometimes*) of the panes I see:
> >>>>>>>>
> >>>>>>>> -bash: /home/xxxxxP/.git-completion.bash: No such file or directory
> >>>>>>>> -bash: /home/xxxxxP/.git-prompt.sh: No such file or directory
> >>>>>>>>
> >>>>>>>> My .bashrc has:
> >>>>>>>>
> >>>>>>>> $ grep git .bashrc
> >>>>>>>> . ~/.git-completion.bash
> >>>>>>>> . ~/.git-prompt.sh
> >>>>>>>>
> >>>>>>>> My userid is xxxxxf (and not xxxxxP).
> >>>>>>>>
> >>>>>>>> Is this known?
> >>>>>>> What if you trace `echo $HOME; echo ~` after the `.`? I have
> >>>>>>> occasional
> >>>>>>> cases where $HOME and ~ start to be different in my shell, which is
> >>>>>>> quite weird and should not happen according to bash documentation.
> >>>>>> Ok,
> >>>>>>
> >>>>>> My userid is xx00mkf.
> >>>>>>
> >>>>>>
> >>>>>> If I add:
> >>>>>>
> >>>>>> . ~/.git-completion.bash
> >>>>>> if [ ! $? = 0 ] ; then
> >>>>>>    echo "HOME=" $HOME
> >>>>>>    echo "~=" ~
> >>>>>> fi
> >>>>>>
> >>>>>> I see:
> >>>>>>
> >>>>>> -bash: /home/xx00m/.git-completion.bash: No such file or directory
> >>>>>> HOME= /home/xx00mkf
> >>>>>> ~= /home/xx00m
> >>>>>>
> >>>>>>
> >>>>>> If I add:
> >>>>>>
> >>>>>> . ~/.git-completion.bash
> >>>>>> if [ ! $? = 0 ] ; then
> >>>>>>    echo "HOME=" $HOME
> >>>>>>    echo "~=" ~
> >>>>>>    echo "~/.git-completion.bash=" ~/.git-completion.bash
> >>>>>> fi
> >>>>>>
> >>>>>> -bash: /home/xx00m/.git-completion.bash: No such file or directory
> >>>>>> HOME= /home/xx00mkf
> >>>>>> ~= /home/xx00mkf
> >>>>>> ~/.git-completion.bash= /home/xx00mkf/.git-completion.bash
> >>>>> HOME dir depends on entries in:
> >>>>>
> >>>>>          /etc/nsswitch.conf
> >>>>>
> >>>>> whether you have /etc/passwd and/or /etc/group files and their entries;
> >>>>>
> >>>>> your SAM and/or AD entry contents including e.g.
> >>>>>
> >>>>>          $ net user $USER | grep '^Comment'
> >>>>>          Comment         <cygwin home="/home/..." group="Users"...>
> >>>>>
> >>>>> You can check if any of these are in effect by running:
> >>>>>
> >>>>>          $ getent passwd $USER
> >>>>>
> >>>>> If you think they are relevant, you might also want to try to trace and
> >>>>> debug
> >>>>> your bash-completion setup scripts:
> >>>>>
> >>>>>          $ set -vx
> >>>>>          $ . /etc/profile.d/bash_completion.sh |& tee
> >>>>> /tmp/completion.log | less
> >>>>>
> >>>>> to see what they are doing that might affect other settings.
> >>>> Thanks, but ~ changes from xx01m to xx01mkf (which is correct) between
> >>>> a few commands in .bashrc:
> >>>>
> >>>> If I add:
> >>>>
> >>>> . ~/.git-completion.bash
> >>>> if [ ! $? = 0 ] ; then
> >>>>    echo "HOME=" $HOME
> >>>>    echo "~=" ~
> >>>>    echo "~/.git-completion.bash=" ~/.git-completion.bash
> >>>> fi
> >>>>
> >>>> I see (*sometimes*):
> >>>>
> >>>> -bash: /home/xx00m/.git-completion.bash: No such file or directory
> >>>> <<<wrong
> >>>> HOME= /home/xx00mkf
> >>>> ~= /home/xx00mkf <<<correct
> >>>> ~/.git-completion.bash= /home/xx00mkf/.git-completion.bash <<<correct
> >>> Well then you have to trace and debug those commands run from your .bashrc
> >>> where
> >>> ~ changes, perhaps using bashdb?
> >> I really don't know how I can debug this?
> >>
> >> With this:
> >>
> >> . ~/.git-completion.bash
> >>
> >> ~ is *sometimes* expanded wrongly:
> >>
> >> With this:
> >>
> >> while [ ! ~ = $HOME ] ; do
> >>    echo "$0: !!! ~ =! \$HOME" >&2
> >> done
> >> . ~/.git-completion.bash
> >>
> >> I *sometimes* see an endless loop.
> >>
> >> With this:
> >>
> >> while [ ! ~ = $HOME ] ; do
> >>    echo "$0: !!! ~ =! \$HOME" ~ $HOME >&2
> >> done
> >> . ~/.git-completion.bash
> >>
> >> I see no error.
> >>
> >> I have a script that I run under mintty. The script starts tmux, with
> >> some panes. I see the error *sometimes* in *some* panes (not the same
> >> every time).
> >>
> >> /Morten
> >> --
> >> Problem reports:      https://cygwin.com/problems.html
> >> FAQ:                  https://cygwin.com/faq/
> >> Documentation:        https://cygwin.com/docs.html
> >> Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple
> >>
> > I've had funky results from time  to time on  ~ expansion in cygwin
> > bash. usually it works fine. But sometimes one of the terminal windows
> > gets into a state where ~ becomes something that isn't all that
> > intelligible and breaks scripts. I forget if starting a new terminal
> > fixes it - usually I just quit using ~ until I end up rebooting. Never
> > really tracked it down.
> It's sufficient to start a new bash (exec bash) to recover. I have the
> effect that sometimes (rarely) ~ flips to become /home/$USER on one
> system where $HOME is configured to be somewhere else.
> I once tried to track it down in bash source, without success so far.
> Yet I suspect it's a bash bug.
> Thomas
Ok. I have not seen problems with $HOME, so I will use that from now
on, and forget ~
Thanks.


More information about the Cygwin mailing list