From: velman AT alumni DOT caltech DOT edu (John Velman) Newsgroups: comp.os.msdos.djgpp Subject: Re: Some things don't run under bash--(Resolution) Date: 1 Jul 1997 20:52:20 GMT Organization: Hughes Aircraft Company Lines: 56 Message-ID: <5pbqm4$atc@hacgate2.hac.com> References: <5orulb$lln AT hacgate2 DOT hac DOT com> NNTP-Posting-Host: x-147-17-14-184.es.hac.com Mime-Version: 1.0 Content-Type: Text/Plain; charset=US-ASCII To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk In article <5orulb$lln AT hacgate2 DOT hac DOT com>, velman AT alumni DOT caltech DOT edu says... > >I must be missing something. Bash is wonderful, as is the whole djgpp suite. >However, some programs (or scripts) are unable to find files they are looking >for, even though they can find them if run in a plain dos box under windows. I got very helpful responses to this (from both Eli Zaretskii and Hans-Bernhard Broeker) that led me to the answer. The answer is just a little bit subtle, so I thought I would post it. First, lest there be any missunderstanding, I had no intention of saying there was a bug in bash. I said "I must be missing something." The issue is the DOS environment size. I had already set my environment to what seemed to be a reasonable size in config.sys ( as one of the djgpp faq's suggests). Specifically, my config.sys contains this line: shell=c:\dos\command.com c:\dos\ /E:2048 /p Since everything ran ok under plain dos, I thought I had taken care of the environment problem. Hans suggested guarenteeing a large enough enviroment for programs needing it by using an alias, like: 'alias latex2e='command.com /e:2000 /c latex2e.bat' This worked, so I decided to read some of the fine print in the DOS help files. Here is what I found in (/dos/help command.com, notes). When you run a new command interpreter, the default environment size for the child is the larger of 256 bytes and the actual memory **in use** by the parent command interpreter. It has nothing to do with the E switch used when calling the parent. To override the default, you have to set an E switch on the call to the child. Interesting default. Thus, even if you set /E:2048 in your config.sys, and you use only - say - 256 bytes of environment, then when you invoke a new command.com with no E switch it gets only 256 bytes of environment. So, when running programs that need a lot of envirnment, use a new command.com with an appropriately large E:/nnnn. Unfortunately, I haven't figured out how to get a windows PIF to start bash directly with a large environment space. By the way, I'm running windows 3.11, dos 6.22. -- John Velman velman AT igate1 DOT hac DOT com