Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not working on Windows using Powershell #1214

Open
Dominiquini opened this issue Dec 13, 2023 · 14 comments
Open

Not working on Windows using Powershell #1214

Dominiquini opened this issue Dec 13, 2023 · 14 comments
Labels

Comments

@Dominiquini
Copy link

Describe the bug
I download (https://github.com/direnv/direnv/releases/download/v2.33.0/direnv.windows-amd64.exe) and enable (Invoke-Expression "$(direnv hook pwsh)") the app on Windows with Powershell, but it's not working!

To Reproduce

  1. Download app (https://github.com/direnv/direnv/releases/download/v2.33.0/direnv.windows-amd64.exe) and rename to 'direnv.exe'
  2. Put it on PATH
  3. Integrate on Powershell (Invoke-Expression "$(direnv hook pwsh)")
  4. In a folder, create '.envrc' with 'export FOO=foo'
  5. Allow execution (direnv allow)
  6. Error:
/bin/bash: line 1: "C:/Tools/Miscellaneous/Binaries/direnv.exe": No such file or directory
/bin/bash: line 1: __main__: command not found

Expected behavior
The variable should be defined without error!

Environment

  • OS: Windows 10 x64
  • Shell: Powershell 7.4.0
  • Direnv version: 2.33.0

Additional context
The same binary works fine with Bash on MSYS2!

Thanks

@mlkiefer
Copy link

mlkiefer commented Jan 4, 2024

I suspect it has something to do with WSL2:

  1. When I run a powershell in git bash (which is based on MSYS2) and move to a directory with a .envrc file, it works.
  2. When I open a Windows terminal with powershell 7.4 and invoke bash there, it jumps to the WSL2 system. That one doesn't know about paths like C:/Whatever_subdir/direnv.exe so the error message might come from there.

@mlkiefer
Copy link

mlkiefer commented Jan 4, 2024

I've seen that @patrickhuber had the same suspicion in #1207 . Did you find a way around it yet, Patrick?

@patrickhuber
Copy link

patrickhuber commented Jan 4, 2024

No, but I found out where it is happening. When direnv creates a sub shell, it wraps the commands in a call to bash. I would think it should use the shell for the export command instead of always using bash.

https://github.com/direnv/direnv/blob/master/internal%2Fcmd%2Frc.go#L273

@patrickhuber
Copy link

I suspect it has something to do with WSL2:

  1. When I run a powershell in git bash (which is based on MSYS2) and move to a directory with a .envrc file, it works.
  2. When I open a Windows terminal with powershell 7.4 and invoke bash there, it jumps to the WSL2 system. That one doesn't know about paths like C:/Whatever_subdir/direnv.exe so the error message might come from there.

I wonder if using the mount path will work https://learn.microsoft.com/en-us/windows/wsl/filesystems

@Dominiquini
Copy link
Author

My problem is when using PowerShell inside Windows File System! If i'm using MSYS2 (bash or zsh) it works fine (same binary that I'm using on PowerShell).
I'm tested on WSL (ubuntu) and it works fine too (different binary, build for Linux)

Thanks.

@patrickhuber
Copy link

patrickhuber commented Jan 17, 2024

Direnv is calling into bash to run its stdlib shell scripts.

Wsl is invoked when you call bash.exe from powershell. Because it is invoked from windows, it is using a windows path to point to the direnv stdlib. When you use the Linux binary from Linux you don't cross the wsl boundary.

The issue is (I believe) the wsl runtime has a different file system than windows because it is a virtual machine. The error is saying "hey, you called bash with this file. I can't see that file because the path c:...\whatever is a windows path and I only understand Linux paths"

When wsl runs it mounts the root fs drive under /mnt/c/... . Mysys doesn't, it runs from windows and supports windows paths https://www.msys2.org/docs/filesystem-paths/

@patrickhuber
Copy link

I dug through the code a bit more and this seems like the best place for a fix https://github.com/direnv/direnv/blob/master/internal%2Fcmd%2Fconfig.go#L102

It appears paths are already being manipulated here for mysys. Some code could be invoked that runs wsl -l -v only if GOOS == "windows". If the command fails, we can assume mysys is installed. If it succeeds, it should return the wsl version so we can assume wsl is installed.

In the wsl case, the path prefix can be changed to /mnt/c (or the respective drive letter at the beginning of the SelfPath).

There may be a better way to detect wsl. This was what I found after googling "detect wsl installed". Another option may be to check for the existence of the \\wsl$ directory

@Dominiquini
Copy link
Author

The ideal should be using the bash.exe installed by MSYS2 (Or Cygwin), and not the one on System32 folder!
Maybe if I change the order of my PATH, this will solve the problem?

Thanks.

@patrickhuber
Copy link

That may fix it in your particular circumstance. The bug will still exist for users who do not have mysys installed. I think a better workaround for you may be to use the DIRENV_BASH environment variable. That way order of the path variables doesn't matter.

@patrickhuber
Copy link

patrickhuber commented Jan 17, 2024

I implemented the wsl check here patrickhuber@9fff44d

I may need something similar for the target as I had to change that by hand during shell testing.

It looks like I'm still getting an error from the direnv dotenv bash ... command that the .env file doesn't exist:

if data, err = os.ReadFile(target); err != nil {

ls -la /mnt/c/Users/patri/source/github.com/patrickhuber/direnv/.env
-rwxrwxrwx 1 patrick patrick 0 Jan 17 16:19 /mnt/c/Users/patri/source/github.com/patrickhuber/direnv/.env

/mnt/c/Users/patri/source/github.com/patrickhuber/direnv/direnv.exe dotenv bash /mnt/c/Users/patri/source/github.com/patrickhuber/direnv/.env
direnv: error open /mnt/c/Users/patri/source/github.com/patrickhuber/direnv/.env: The system cannot find the path specified.

I wonder if os.ReadFile has a bug under wsl when reading over a mount. I did find this issue golang/go#42184, though it may be only related to symlinks.

I probably need an isolated binary to test. A go program compiled to windows x64 that just tries to open a file with os.ReadFile.

@patrickhuber
Copy link

patrickhuber commented Jan 18, 2024

So looks like when you invoke a windows executable from wsl and you specify a file, the windows executable expects windows paths. So the example above changed to :

bash -c 'eval $(/mnt/c/Users/patri/source/github.com/patrickhuber/direnv/direnv.exe stdlib) && __main__ dotenv $"c:/Users/patri/source/github.com/patrickhuber/direnv/.env"'
direnv: .env at c:/Users/patri/source/github.com/patrickhuber/direnv/.env not found

This is coming from the stdlib.sh dotenv function expecting a linux path. I'm not sure how to work around this other than to have the dotenv function do some path manipulation if it is running under wsl. Something like uname -r | sed -n 's/.*\( *microsoft *\).*/\1/p' should be unique enough to confirm running under wsl.

There are also a few env vars that can be checked, looking at my system I see: WSLENV, WSL2_GUI_APPS_ENABLED, WSL_DISTRO_NAME and WSL_INTEROP

Another option is to use the wslpath executable to convert the path. ex:

$ wslpath c:/Users/patri/source/github.com/patrickhuber/direnv/.env
/mnt/c/Users/patri/source/github.com/patrickhuber/direnv/.env

@Dominiquini
Copy link
Author

Dominiquini commented Jan 18, 2024

I settup DIRENV_BASH to my MSYS2 bash.exe, and now I'm getting this error on PowerShell 7:

direnv: loading /f/Documents/Projects/C++/Ateams/.envrc
declare -x ALIAE_CONFIG="C:\\Users\\Rafael Dominiquini\\.aliae.yaml"
declare -x ALLUSERSPROFILE="C:\\ProgramData"
declare -x ANT_HOME="C:\\Developing\\Ant"
declare -x APPDATA="C:\\Users\\Rafael Dominiquini\\AppData\\Roaming"
declare -x AVISYNTH_SDK_PATH="C:\\Program Files (x86)\\AviSynth+\\FilterSDK"
declare -x CAMLIBS="C:\\Program Files\\Darktable\\lib\\libgphoto2\\2.5.30"
declare -x CARGO_HOME="C:\\Developing\\Rust"
declare -x CATALINA_HOME="C:\\Tools\\Tomcat\\bin"
declare -x COLUMNS="128"
declare -x COMMONPROGRAMFILES="C:\\Program Files\\Common Files"
declare -x COMPUTERNAME="DESKTOP"
declare -x COMSPEC="C:\\WINDOWS\\system32\\cmd.exe"
declare -x COURSIER_BIN_DIR="C:\\Developing\\Scala\\bin"
declare -x COURSIER_CACHE="C:\\Developing\\Scala\\cache"
declare -x ChocolateyInstall="C:\\ProgramData\\chocolatey"
declare -x ChocolateyLastPathUpdate="133362825898765584"
declare -x CommonProgramW6432="C:\\Program Files\\Common Files"
declare -x DIRENV_BASH="C:\\Developing\\MSYS2\\usr\\bin\\bash.exe"
declare -x DIRENV_IN_ENVRC="1"
declare -x DIRENV_WATCHES="eJyszr9OwzAQgPFXQV5bVY7t89nZUCtmhMTEMVzsi2qUPxCnBYT67ogFGBjZvunT7-FDPfN6VK26aYkOczqNMq2V6HaZnyR91X6zIbpehcdKtJPpvCS1VeOc1zKKahvUAKANuK2St1LXqtp1Ocll-73et0T3VZZKdMc9y3B1mMcylZdTmQrRbpgTD0T1yIsQ5bLIdCbiYZhfiaKHxqW-x86HEJlDYPGMSUKWzmJCZ7MJIKhTo414a61EnTSk0PUQzR9WC80_W7NM70TR-CA2ac8AbDk4cYwxagvofPLouQEj6DofsiD47HuTxXSYJXce-TdV_wh7HqpcHj8DAAD__7Xai5Q="
declare -x DokanLibrary2="C:\\Program Files\\Dokan\\"
declare -x DokanLibrary2_LibraryPath_x64="C:\\Program Files\\Dokan\\lib\\"
declare -x DokanLibrary2_LibraryPath_x86="C:\\Program Files\\Dokan\\x86\\lib\\"
declare -x DriverData="C:\\Windows\\System32\\Drivers\\DriverData"
declare -x EDITOR="vim"
declare -x ERLANG_HOME="C:\\Developing\\Erlang"
declare -x FFMPEG_BINARY="C:\\Program Files\\FFmpeg\\bin\\ffmpeg.exe"
declare -x FREI0R_PATH="C:\\Program Files\\FFmpeg\\effects\\frei0r-1"
declare -x FZF_ALT_C_COMMAND="fd . --color=always --type d --follow --hidden"
declare -x FZF_ALT_C_OPTS="--prompt 'New Location> ' --ansi --height 50%"
declare -x FZF_CTRL_R_OPTS="--height 50% --ansi --preview '\"echo\" {}' --bind 'enter:accept-or-print-query,ctrl-y:execute-silent(\"echo\" {} | clip)'"
declare -x FZF_CTRL_T_COMMAND="fd . --color=always --type f --follow --hidden"
declare -x FZF_CTRL_T_OPTS="--prompt 'Files> ' --ansi --height 50% --bind 'alt-a:change-prompt(All> )+reload(fd . --color=always --follow --hidden),alt-f:change-prompt(Files> )+reload(fd . --color=always --type f --follow --hidden),alt-d:change-prompt(Directories> )+reload(fd . --color=always --type d --follow --hidden)'"
declare -x FZF_DEFAULT_COMMAND="fd . --color=always --follow --hidden"
declare -x FZF_DEFAULT_OPTS="--prompt '> ' --ansi --layout reverse --border --preview-window right:hidden:wrap --preview 'dir /a:d /b {} 2>&1 | findstr /i /n /c:\"File Not Found\">nul && (file -bL --mime {} | grep -vq 'text' && exiftool {} || bat --color=always --style=numbers {}) || (eza -1 --color=always --icons=always -s=type {})' --bind 'ctrl-a:select-all,ctrl-q:deselect-all,ctrl-x:toggle,ctrl-t:toggle-all,ctrl-p:toggle-preview'"
declare -x GIT_SSH="C:\\Program Files\\OpenSSH\\ssh.exe"
declare -x GNUPLOT_LIB="C:\\Program Files\\gnuplot\\demo;C:\\Program Files\\gnuplot\\demo\\games;C:\\Program Files\\gnuplot\\share"
declare -x GOCACHE="C:\\ProgramData\\Go\\cache"
declare -x GOENV="C:\\ProgramData\\Go\\env"
declare -x GOPATH="C:\\ProgramData\\Go"
declare -x GOROOT="C:\\Developing\\Go"
declare -x GROOVY_HOME="C:\\Developing\\Groovy"
declare -x GSTREAMER_1_0_ROOT_MSVC_X86_64="C:\\Program Files (x86)\\GStreamer\\1.0\\msvc_x86_64\\"
declare -x HOME="/c/Users/Rafael Dominiquini"
declare -x HOMEDRIVE="C:"
declare -x HOMEPATH="\\Users\\Rafael Dominiquini"
declare -x IMAGEMAGICK_BINARY="C:\\Program Files\\ImageMagick\\magick.exe"
declare -x IOLIBS="C:\\Program Files\\Darktable\\lib\\libgphoto2_port\\0.12.1"
declare -x IridiumIO="C:\\Users\\Rafael Dominiquini\\AppData\\Local\\IridiumIO"
declare -x JAVAFX_HOME="C:\\Developing\\Java\\JavaFX"
declare -x JAVA_HOME="C:\\Developing\\Java"
declare -x JETVMPROP=" -Djet.stack.trace"
declare -x LANG="en_US.UTF-8"
declare -x LC_ALL="C"
declare -x LESS="-M -S -W -r --mouse"
declare -x LESSCLOSE="lesspipe.sh %s %s"
declare -x LESSHISTFILE="-"
declare -x LESSOPEN="| lesspipe.sh %s"
declare -x LOCALAPPDATA="C:\\Users\\Rafael Dominiquini\\AppData\\Local"
declare -x LOGONSERVER="\\\\DESKTOP"
declare -x LYNX_CFG="C:\\Program Files (x86)\\Lynx\\lynx.cfg"
declare -x MINGW_HOME="C:\\Developing\\MinGW"
declare -x MOSQUITTO_DIR="C:\\Tools\\Mosquitto"
declare -x MSYS_HOME="C:\\Developing\\MSYS2"
declare -x NUMBER_OF_PROCESSORS="8"
declare -x OLDPWD="/f/Documents/Projects/C++/Ateams"
declare -x ONEAPI_ROOT="C:\\Program Files (x86)\\Intel\\oneAPI\\"
declare -x OS="Windows_NT"
declare -x PAGER="less"
declare -x PATH="/c/Program Files/PowerShell/7:/c/Windows:/c/Windows/System32:/c/Windows/System32/wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Program Files/gsudo/Current:/c/Program Files/WSL:/c/ProgramData/chocolatey/bin:/c/Program Files/PowerShell/7:/c/Program Files/PyCmd:/c/Program Files/Clink:/c/Program Files/Elvish:/c/Program Files/Nushell:/c/Program Files/dotnet:/c/ProgramData/npm:/c/ProgramData/Go/bin:/c/Program Files/Git/cmd:/c/Program Files/Vim:/c/Program Files/Vifm:/c/Program Files/Neovim/bin:/c/Program Files/Helix:/c/Program Files/Emacs/bin:/c/Program Files/7-Zip:/c/Program Files/mpv:/c/Program Files/mpv.net:/c/Program Files/Everything:/c/Program Files/WireGuard:/c/Program Files/AESCrypt:/c/Program Files/CryFS/bin:/c/Program Files/EncFS:/c/Program Files/FFmpeg/bin:/c/Program Files/FFmpeg/tools/bin:/c/Program Files/ImageMagick:/c/Program Files/GraphicsMagick:/c/Program Files/Graphviz/bin:/c/Program Files/MPlayer:/c/Program Files/VIPS/bin:/c/Program Files/MediaInfo/CLI:/c/Program Files/aria2:/c/Program Files/NSSM:/c/Program Files/eSpeak NG:/c/Program Files/OpenSSL/bin:/c/Program Files/OpenSSH:/c/Program Files/Certbot/bin:/c/Program Files/PuTTY:/c/Program Files/Links:/c/Program Files/mitmproxy/bin:/c/Program Files/File Browser:/c/Program Files/gnuplot/bin:/c/Program Files/R/bin:/c/Program Files/Multipass/bin:/c/Program Files/Tesseract-OCR:/c/Program Files/Wolfram Research/WolframScript:/c/Program Files/Docker/Docker/resources/bin:/c/Program Files/IPFS Desktop/resources/app.asar.unpacked/node_modules/go-ipfs/go-ipfs:/c/Program Files/Intel/PresentMon/PresentMonApplication:/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/c/Program Files (x86)/GnuPG/bin:/c/Program Files (x86)/Nmap:/c/Program Files (x86)/dotnet:/c/Program Files (x86)/WsgiDAV:/c/Program Files (x86)/WS4W:/c/Program Files (x86)/Steam/steamcmd:/c/Program Files (x86)/Midnight Commander:/c/Program Files (x86)/GStreamer/1.0/msvc_x86_64/bin:/c/Tools/cURL/bin:/c/Tools/ANSICON:/c/Tools/SQLite:/c/Tools/MariaDB/bin:/c/Tools/PostgreSQL/bin:/c/Tools/PostgreSQL/PgBouncer/bin:/c/Tools/CouchDB/bin:/c/Tools/MongoDB/bin:/c/Tools/Apache/bin:/c/Tools/Tomcat/bin:/c/Tools/Redis:/c/Tools/RabbitMQ/rabbitmq_server/sbin:/c/Tools/Mosquitto:/c/Tools/SysinternalsSuite:/c/Tools/NirSoft/x64:/c/Tools/NirSoft:/c/Tools/Gammadyne:/c/Tools/Y-Cruncher:/c/Tools/Kryptor:/c/Tools/HyperDbg:/c/Tools/Rizin/bin:/c/Tools/LxRunOffline:/c/Tools/Poppler/Library/bin:/c/Tools/Hasherezade/HollowsHunter:/c/Tools/ACaudwell/Gource/cmd:/c/Tools/ACaudwell/Logstalgia/cmd:/c/Tools/Waterlander/Dos2Unix/bin:/c/Tools/Waterlander/WCD/bin:/c/Tools/AndreSimon/Ansifilter:/c/Tools/AndreSimon/Highlight:/c/Tools/Miscellaneous/Binaries:/c/Tools/Miscellaneous/Scripts:/c/Developing/Java/bin:/c/Developing/Java/jbang/bin:/c/Developing/Java/jmove/bin:/c/Developing/Python:/c/Developing/Python/Scripts:/c/Developing/Python/PyPy:/c/Developing/Android/cmdline-tools/latest/bin:/c/Developing/Android/build-tools/Current:/c/Developing/Android/platform-tools:/c/Developing/Android/tools:/c/Developing/Android/scrcpy:/c/Developing/Go/bin:/c/Developing/Haxe:/c/Developing/Kotlin/bin:/c/Developing/Kotlin/kscript/bin:/c/Developing/Groovy/bin:/c/Developing/Clojure:/c/Developing/Node.js:/c/Developing/Lisp:/c/Developing/Lua:/c/Developing/Lua/LuaRT/bin:/c/Developing/Lua/LuaJIT:/c/Developing/Lua/Teal:/c/Developing/Lua/Luau:/c/Developing/Prolog/bin:/c/Developing/PHP:/c/Developing/PHP/composer:/c/Developing/PureScript:/c/Developing/Ruby/bin:/c/Developing/Rust/bin:/c/Developing/Julia/bin:/c/Developing/Scala/bin:/c/Developing/Perl/perl/bin:/c/Developing/Perl/perl/site/bin:/c/Developing/Erlang/bin:/c/Developing/Zig:/c/Developing/NASM:/c/Developing/Neko:/c/Developing/Ant/bin:/c/Developing/Gradle/bin:/c/Developing/Maven/bin:/c/Developing/Bakefile:/c/Developing/Xmake:/c/Developing/Bazel:/c/Developing/UCRT/bin:/c/Developing/MinGW/bin:/:/usr/bin:/c/Developing/Cygwin/bin:/c/Developing/TCC:/c/Developing/Lua/bin:/c/Users/Rafael Dominiquini/Library/Documents/PowerShell/Scripts:/c/Users/Rafael Dominiquini/AppData/Local/Microsoft/WindowsApps:/c/Users/Rafael Dominiquini/AppData/Local/Programs/oh-my-posh/bin:/c/Users/Rafael Dominiquini/AppData/Local/Programs/espanso:/c/Users/Rafael Dominiquini/AppData/Local/Programs/IPFS Desktop/resources/app.asar.unpacked/node_modules/go-ipfs-dep/go-ipfs:/c/Users/Rafael Dominiquini/AppData/Local/Programs/Fiddler:/c/Users/Rafael Dominiquini/AppData/Local/Programs/Hyper/resources/bin:/c/Users/Rafael Dominiquini/AppData/Local/Programs/Microsoft VS Code/bin:/c/Users/Rafael Dominiquini/AppData/Local/Programs/MiKTeX/miktex/bin/x64:/c/Users/Rafael Dominiquini/AppData/Local/GitHubDesktop/bin:/c/Users/Rafael Dominiquini/AppData/Local/atom/bin:/c/Users/Rafael Dominiquini/AppData/Local/Yarn/bin:/c/Users/Rafael Dominiquini/AppData/Local/XPipe/cli/bin:/c/Users/Rafael Dominiquini/AppData/Local/Docker Labs Debug Tools/bin:/c/Users/Rafael Dominiquini/AppData/Roaming/Composer/vendor/bin:/c/Users/Rafael Dominiquini/scoop/shims:/c/Users/Rafael Dominiquini/.dotnet/tools:/c/Users/Rafael Dominiquini/.local/bin"
declare -x PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PERL;.PL;.RB;.PHP;.SH;.CPL"
declare -x PATH_DEV="C:\\Developing\\Java\\bin;C:\\Developing\\Java\\jbang\\bin;C:\\Developing\\Java\\jmove\\bin;C:\\Developing\\Python;C:\\Developing\\Python\\Scripts;C:\\Developing\\Python\\PyPy;C:\\Developing\\Android\\cmdline-tools\\latest\\bin;C:\\Developing\\Android\\build-tools\\Current;C:\\Developing\\Android\\platform-tools;C:\\Developing\\Android\\tools;C:\\Developing\\Android\\scrcpy;C:\\Developing\\Go\\bin;C:\\Developing\\Haxe;C:\\Developing\\Kotlin\\bin;C:\\Developing\\Kotlin\\kscript\\bin;C:\\Developing\\Groovy\\bin;C:\\Developing\\Clojure;C:\\Developing\\Node.js;C:\\Developing\\Lisp;C:\\Developing\\Lua;C:\\Developing\\Lua\\LuaRT\\bin;C:\\Developing\\Lua\\LuaJIT;C:\\Developing\\Lua\\Teal;C:\\Developing\\Lua\\Luau;C:\\Developing\\Prolog\\bin;C:\\Developing\\PHP;C:\\Developing\\PHP\\composer;C:\\Developing\\PureScript;C:\\Developing\\Ruby\\bin;C:\\Developing\\Rust\\bin;C:\\Developing\\Julia\\bin;C:\\Developing\\Scala\\bin;C:\\Developing\\Perl\\perl\\bin;C:\\Developing\\Perl\\perl\\site\\bin;C:\\Developing\\Erlang\\bin;C:\\Developing\\Zig;C:\\Developing\\NASM;C:\\Developing\\Neko;C:\\Developing\\Ant\\bin;C:\\Developing\\Gradle\\bin;C:\\Developing\\Maven\\bin;C:\\Developing\\Bakefile;C:\\Developing\\Xmake;C:\\Developing\\Bazel;C:\\Developing\\UCRT\\bin;C:\\Developing\\MinGW\\bin;C:\\Developing\\MSYS2;C:\\Developing\\MSYS2\\usr\\bin;C:\\Developing\\Cygwin\\bin;C:\\Developing\\TCC;C:\\Developing\\Lua\\bin;"
declare -x PATH_TOOLS="C:\\Tools\\cURL\\bin;C:\\Tools\\ANSICON;C:\\Tools\\SQLite;C:\\Tools\\MariaDB\\bin;C:\\Tools\\PostgreSQL\\bin;C:\\Tools\\PostgreSQL\\PgBouncer\\bin;C:\\Tools\\CouchDB\\bin;C:\\Tools\\MongoDB\\bin;C:\\Tools\\Apache\\bin;C:\\Tools\\Tomcat\\bin;C:\\Tools\\Redis;C:\\Tools\\RabbitMQ\\rabbitmq_server\\sbin;C:\\Tools\\Mosquitto;C:\\Tools\\SysinternalsSuite;C:\\Tools\\NirSoft\\x64;C:\\Tools\\NirSoft;C:\\Tools\\Gammadyne;C:\\Tools\\Y-Cruncher;C:\\Tools\\Kryptor;C:\\Tools\\HyperDbg;C:\\Tools\\Rizin\\bin;C:\\Tools\\LxRunOffline;C:\\Tools\\Poppler\\Library\\bin;C:\\Tools\\Hasherezade\\HollowsHunter;C:\\Tools\\ACaudwell\\Gource\\cmd;C:\\Tools\\ACaudwell\\Logstalgia\\cmd;C:\\Tools\\Waterlander\\Dos2Unix\\bin;C:\\Tools\\Waterlander\\WCD\\bin;C:\\Tools\\AndreSimon\\Ansifilter;C:\\Tools\\AndreSimon\\Highlight;C:\\Tools\\Miscellaneous\\Binaries;C:\\Tools\\Miscellaneous\\Scripts;"
declare -x PATH_TO_FX="C:\\Developing\\Java\\JavaFX\\lib"
declare -x PATH_TO_FX_MODS="C:\\Developing\\Java\\JavaFX\\jmods"
declare -x POSH_DEFAULT_THEME="C:\\Users\\Rafael Dominiquini\\.oh-my-posh\\default.omp.json"
declare -x POSH_THEMES_PATH="C:\\Users\\Rafael Dominiquini\\.oh-my-posh\\themes"
declare -x POWERSHELL_DISTRIBUTION_CHANNEL="MSI:Windows 10 Pro"
declare -x PROCESSOR_ARCHITECTURE="AMD64"
declare -x PROCESSOR_IDENTIFIER="Intel64 Family 6 Model 94 Stepping 3, GenuineIntel"
declare -x PROCESSOR_LEVEL="6"
declare -x PROCESSOR_REVISION="5e03"
declare -x PROGRAMFILES="C:\\Program Files"
declare -x PSModulePath="F:\\Documents\\PowerShell\\Modules;C:\\Program Files\\PowerShell\\Modules;c:\\program files\\powershell\\7\\Modules;C:\\Program Files (x86)\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules;"
declare -x PUBLIC="C:\\Users\\Public"
declare -x PWD="/f/Documents/Projects/C++/Ateams"
declare -x PY_HOME="C:\\Developing\\Python"
declare -x PY_PATH="C:\\Developing\\Python;C:\\Developing\\Python\\Lib;C:\\Developing\\Python\\Lib\\site-packages;C:\\Developing\\Python\\DLLs"
declare -x ProgramData="C:\\ProgramData"
declare -x ProgramW6432="C:\\Program Files"
declare -x RUSTUP_HOME="C:\\Developing\\Rust"
declare -x SBCL_HOME="C:\\Developing\\Lisp"
declare -x SBT_HOME="C:\\Developing\\Scala"
declare -x SESSIONNAME="Console"
declare -x SHLVL="1"
declare -x SYSTEMDRIVE="C:"
declare -x SYSTEMROOT="C:\\WINDOWS"
declare -x TEMP="/c/Users/RAFAEL~1/AppData/Local/Temp"
declare -x TERM="xterm-256color"
declare -x TESSDATA_PREFIX="C:\\Program Files\\Tesseract-OCR\\tessdata"
declare -x TMP="/c/Users/RAFAEL~1/AppData/Local/Temp"
declare -x USERDOMAIN="DESKTOP"
declare -x USERDOMAIN_ROAMINGPROFILE="DESKTOP"
declare -x USERNAME="Rafael Dominiquini"
declare -x USERPROFILE="C:\\Users\\Rafael Dominiquini"
declare -x VBOX_MSI_INSTALL_PATH="C:\\Program Files\\VirtualBox\\"
declare -x VISUAL="vim"
declare -x VTUNE_PROFILER_2023_DIR="C:\\Program Files (x86)\\Intel\\oneAPI\\vtune\\2023.2.0"
declare -x WINDIR="C:\\WINDOWS"
declare -x WSLENV="WT_SESSION:WT_PROFILE_ID:USERPROFILE/up"
declare -x WT_PROFILE_ID="{00000001-4f2a-5b96-ac1e-a2962a402336}"
declare -x WT_SESSION="e971f109-2868-441f-af23-3558bd952a0d"
direnv: export +COMMONPROGRAMFILES +COMSPEC +PROGRAMFILES +SYSTEMDRIVE +SYSTEMROOT +TERM -ComSpec -CommonProgramFiles -ProgramFiles -SystemDrive -SystemRoot ~PATH
Remove-Item: A positional parameter cannot be found that accepts argument 'ProgramFiles'.
Remove-Item: A positional parameter cannot be found that accepts argument 'SystemDrive'.
Remove-Item: A positional parameter cannot be found that accepts argument 'SystemRoot'.
Remove-Item: A positional parameter cannot be found that accepts argument 'ComSpec'.
Remove-Item: A positional parameter cannot be found that accepts argument 'CommonProgramFiles'.

Thanks.

@violen
Copy link

violen commented Feb 29, 2024

could there be a check when running bash.exe if you startup in WSL?

WSL got the wslpath helper function where you could throw a Windows Path against and it gives you the Linux variant

@nwisemanII
Copy link

nwisemanII commented Mar 25, 2024

Would it be possible to query for more specific ENV_Vars that won't clash with other XDG "settings" on windows?

https://gist.github.com/nwisemanII/b3d75336b7dffd2fc77ba520eb0adb57

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

5 participants