Program files environmental variables

Brian Inglis Brian.Inglis@SystematicSw.ab.ca
Tue Nov 23 18:07:17 GMT 2021


On 2021-11-23 02:02, john doe via Cygwin wrote:
> Cygwins,
> 
> Is there a way to get the value of PROGRAMFILES(x86) and PROGRAMW6432 in
> Bash:
> 
> $ echo $PROGRAMFILES; echo "$PROGRAMFILES(x86)"; echo $PROGGRAMW6432
> C:\Program Files
> C:\Program Files(x86)
> 
> $ cmd.exe /C "echo %PROGRAMFILES% %PROGRAMFILES(x86)% %PROGRAMW6432%"
> C:\Program Files C:\Program Files (x86) C:\Program Files
> 
> 
> PROGRAMFILES works in Bash but not the other two.
> 
> I could not find anything relevent in the archive or when googling.

On my system under only the following Program... variables are exposed:

$ echo $ProgramData $PROGRAMFILES $ProgramW6432	# x64
C:\ProgramData C:\Program Files C:\Program Files
$ echo $ProgramData $PROGRAMFILES $ProgramW6432	# x86
C:\ProgramData C:\Program Files (x86) C:\Program Files

It is often a better idea to use cygpath options or Windows folder ids:

"System information:
-A, --allusers        use `All Users' instead of current user for -D, -P
-D, --desktop         `Desktop' directory
-H, --homeroot        `Profiles' directory (home root)
-O, --mydocs          `My Documents' directory
-P, --smprograms      Start Menu `Programs' directory
-S, --sysdir          system directory
-W, --windir          `Windows' directory
-F, --folder ID       special folder with numeric ID"

$ for f in {0..64}; do
     p=`cygpath -UF $f 2> /dev/null` && [ -n "$p" ] && echo $f $p
   done # sanitized
  0 $HOME/Desktop
  2 $HOME/AppData/Roaming/Microsoft/Windows/Start Menu/Programs
  5 $HOME/Documents
  6 $HOME/Favorites
  7 $HOME/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup
  8 $HOME/AppData/Roaming/Microsoft/Windows/Recent
  9 $HOME/AppData/Roaming/Microsoft/Windows/SendTo
11 $HOME/AppData/Roaming/Microsoft/Windows/Start Menu
13 $HOME/Music
14 $HOME/Videos
16 $HOME/Desktop
19 $HOME/AppData/Roaming/Microsoft/Windows/Network Shortcuts
20 /proc/cygdrive/c/Windows/Fonts
21 $HOME/AppData/Roaming/Microsoft/Windows/Templates
22 /proc/cygdrive/c/ProgramData/Microsoft/Windows/Start Menu
23 /proc/cygdrive/c/ProgramData/Microsoft/Windows/Start Menu/Programs
24 /proc/cygdrive/c/ProgramData/Microsoft/Windows/Start 
Menu/Programs/StartUp
25 /home/Public/Desktop
26 $HOME/AppData/Roaming
27 $HOME/AppData/Roaming/Microsoft/Windows/Printer Shortcuts
28 $HOME/AppData/Local
29 $HOME/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup
30 /proc/cygdrive/c/ProgramData/Microsoft/Windows/Start 
Menu/Programs/StartUp
31 $HOME/Favorites
32 $HOME/AppData/Local/Microsoft/Windows/INetCache
33 $HOME/AppData/Local/Microsoft/Windows/INetCookies
34 $HOME/AppData/Local/Microsoft/Windows/History
35 /proc/cygdrive/c/ProgramData
36 /proc/cygdrive/c/Windows
37 /proc/cygdrive/c/Windows/System32
38 /proc/cygdrive/c/Program Files
39 $HOME/Pictures
40 $HOME
41 /proc/cygdrive/c/Windows/SysWOW64
42 /proc/cygdrive/c/Program Files (x86)
43 /proc/cygdrive/c/Program Files/Common Files
44 /proc/cygdrive/c/Program Files (x86)/Common Files
45 /proc/cygdrive/c/ProgramData/Microsoft/Windows/Templates
46 /home/Public/Documents
47 /proc/cygdrive/c/ProgramData/Microsoft/Windows/Start 
Menu/Programs/Administrative Tools
48 $HOME/AppData/Roaming/Microsoft/Windows/Start 
Menu/Programs/Administrative Tools
53 /home/Public/Music
54 /home/Public/Pictures
55 /home/Public/Videos
56 /proc/cygdrive/c/Windows/Resources
59 $HOME/AppData/Local/Microsoft/Windows/Burn/Burn

These output nothing:

$ printenv 'Program Files (x86)'
$ printenv 'ProgramFiles(x86)'

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]


More information about the Cygwin mailing list