From: Dave H. <dhy...@br...> - 2004-09-23 18:18:18
|
Hi Suresh, > How is this happening? Why is it happening? =20 > So far, I have not noticed anything bad because of this. The why part is because UNIX programs expect the PATH environment variable to be a colon separated list of directories to search. If the path were left alone, these programs wouldn't work properly. One of the big reasons for MSYS to exist is to allow easy porting of UNIX/Linux programs to the Win32 environment. I haven't looked at the code to see exactly where it happens, but I suspect that it happens during the runtime library initialization prior to calling main. Somebody has to call the Win32 function to read the environment and convert it into the format the main passes on. I noticed that the TMP, and TEMP environment variables are also adjusted this way. You'll see the same thing if you were to do: sh -c "echo $PATH" -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/=20 |
From: Dave H. <dhy...@br...> - 2004-09-23 23:36:36
|
Hi Suresh, > So -- at least on my machine -- Microsoft Windows does not > have any built-in env command. Is something messed up on my > machine, or does Microsoft Windows really not have an "env " > command? This is getting off-topic now since we're no longer talking about msys. From the cmd.exe shell (normal command line shell for Windows NT/2000/XP), the "set" command with no arguments shows the environment. You can type help at the command line prompt (of cmd.exe) to get a complete list of "DOS" commands. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/=20 |
From: Keith M. <kei...@to...> - 2004-09-24 08:33:57
|
Dave Hylands wrote: >> So -- at least on my machine -- Microsoft Windows does not >> have any built-in env command. Is something messed up on my >> machine, or does Microsoft Windows really not have an "env " >> command? > > This is getting off-topic now since we're no longer talking about msys. Agreed, but just for the record, IIRC Microsoft *never* provided an env command in *any* version of Windows, nor in MS-DOS. > From the cmd.exe shell (normal command line shell for Windows > NT/2000/XP), the "set" command with no arguments shows the environment. As indeed it will with any Bourne compatible UNIX/Linux shell. In *nix however, there is a distinction between local and exported environments. set with no arguments shows the *local* environment, env shows the *exported* environment, and this distinction is true of MSYS too. (BTW, another way to see the exported environment is to use the export command without arguments, but the display format is somewhat different). Neither Windows nor MS-DOS have any concept of a local environment, (everything is exported, whether you like it or not), so using set without arguments in a cmd.exe shell, is entirely analogous to using env in an MSYS shell. Best regards, Keith. |
From: Suresh Govindachar<sgo...@ya...> - 2004-09-23 23:04:47
|
* Dave Hylands Sent on 23 Sep 2004 11:17:57 -0700: >> How is this happening? Why is it happening? So far, I >> have not noticed anything bad because of this. > > The why part is because UNIX programs expect the PATH > environment variable to be a colon separated list of > directories to search. If the path were left alone, these > programs wouldn't work properly. One of the big reasons > for MSYS to exist is to allow easy porting of UNIX/Linux > programs to the Win32 environment. > > I haven't looked at the code to see exactly where it > happens, but I suspect that it happens during the runtime > library initialization prior to calling main. Somebody has > to call the Win32 function to read the environment and > convert it into the format the main passes on. I noticed > that the TMP, and TEMP environment variables are also > adjusted this way. > > You'll see the same thing if you were to do: > > sh -c "echo $PATH" > This response made me look more closely at the env command: D:\suresh>which env C:\OPT\MSYS\1.0\BIN\env.exe I was assuming that the "env " command being executed was a Microsoft Windows command. Renaming c:\opt\msys\1.0\bin\env.exe results in D:\suresh>env Bad command or file name So -- at least on my machine -- Microsoft Windows does not have any built-in env command. Is something messed up on my machine, or does Microsoft Windows really not have an "env " command? Thanks, --Suresh |
From: Luke D. <cod...@ho...> - 2004-09-25 08:03:10
|
----- Original Message ----- From: "Suresh Govindachar" <sgo...@ya...> To: <min...@li...> Sent: Friday, September 24, 2004 7:05 AM Subject: Re: [Mingw-msys] How did env's PATH get changed? > So -- at least on my machine -- Microsoft Windows does not > have any built-in env command. Is something messed up on my > machine, or does Microsoft Windows really not have an "env " > command? > > Thanks, > > --Suresh Windows has no "env" command. In the command prompt you can type "set" with no arguments to list the environment variables. Luke |