Wrong expansion of ~/

Morten Kjærulff mortenkjarulff@gmail.com
Thu Aug 27 07:44:30 GMT 2020


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


More information about the Cygwin mailing list