[ANNOUNCEMENT] Updated [experimental]: bash-3.1-7

Eric Blake ebb9@byu.net
Mon Sep 11 22:13:00 GMT 2006

mwoehlke <mwoehlke <at> tibco.com> writes:

> >>
> >> So $HOME is being set wrong. "echo $HOME | od -c" gives " /   h   o   m 
> >>  e   /   m   w   o   e   h   l   k   e  \r  \n". "echo %HOME%" from a 
> >> fresh cmd.exe gives "C:/Documents and Settings/mwoehlke". I ran d2u on 
> >> /etc/profile, /etc/default/etc/profile and /etc/passwd.

I can't reproduce this.  Have you tried 'bash -lvx' for a verbose trace, to see 
if some text-mode file is being sourced very early in your edited /etc/profile 
which does HOME=/home/mwoehlke?  The fact that Windows %HOME% is defined 
differently than what you want in cygwin makes it seem like you are doing 
something in /etc/profile to override what cygwin would normally do for $HOME.  
What does 'env' say HOME is when invoked from cmd.exe?  I would expect it to be 
a POSIX-translation of %HOME%, rather than /home/mwoelke\r, and that would be 
confirmation that something in (or called by) /etc/profile is the culprit.

Also, I would recommend "echo $HOME- | od -c", so that you can distinguish 
between any \r actually in $HOME and ensure that echo is not outputting in text 
mode to the pipe.

> No...
> > I ran d2u on /etc/profile, /etc/default/etc/profile and /etc/passwd.
> Besides, $HOME is colon-separated, with data after it, so even if it 
> does/did, it seems like something else would be going wrong if this 
> caused $HOME to have a '\r' on the end.

According to /etc/defaults/etc/profile, in the algorithm for setting 
$HOME, /etc/passwd is option 2, only used if %HOME% doesn't exist in the 
Windows environment as option 1.

> POSIXLY_CORRECT = '1' <-- what is setting this, and why?

That is being set by cygcheck, just before invoking external programs.  It 
probably had something to do with forcing external programs to not rearrange 
option arguments (for example, "ls foo --all" treats --all as an option, 
but "POSIXLY_CORRECT=1 ls foo --all" treats --all as a filename).  But I think 
it is possible to get along without doing it (repeating the example, "ls -- 
foo --all" treats --all as a filename), and I personally think that cygcheck 
should be patched to QUIT setting POSIXLY_CORRECT, so that we can tell the 
masochists apart from normal users.

Eric Blake

Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

More information about the Cygwin mailing list