Skip to content

Fish shell doesn't handle Windows style paths #6047

@mati865

Description

@mati865

Description / Steps to reproduce the issue

Unlike Bash, MSYS2's Fish shell doesn't handle Windows style paths like.

I'm not sure whether this issue belongs to the Fish upstream or here.

Noticed the problem by running COMPLETE=fish jj | source which results in broken completions. The completions are broken because that command produces:

complete --keep-order --exclusive --command jj --arguments "(COMPLETE=fish "G:\\msys64\\clang64\\bin\\jj.exe" -- (commandline --current-process --tokenize --cut-at-cursor) (commandline --current-token))"

As the workaround, I convert the path in my config:

    complete -e -c jj
    COMPLETE=fish jj | sed "s/\\\\\\\\/\//g" | source

Expected behavior

Expected Fish to behave just like Bash does:

$ "G:\\msys64\\clang64\\bin\\jj.exe" --version
jj 0.38.0-2508982cde5c7e4db0933e0b6469f9e778e71e28

$ "G:/msys64/clang64/bin/jj.exe" --version
jj 0.38.0-2508982cde5c7e4db0933e0b6469f9e778e71e28

$ "G:\\msys64\\clang64\\bin/jj.exe" --version
jj 0.38.0-2508982cde5c7e4db0933e0b6469f9e778e71e28

Actual behavior

Instead, Fish handles paths containing at least one slash well, but fails with escaped backslashes only:

❯ "G:\\msys64\\clang64\\bin\\jj.exe" --version
fish: Unknown command: 'G:\\msys64\\clang64\\bin\\jj.exe'

❯ "G:/msys64/clang64/bin/jj.exe" --version
jj 0.38.0-2508982cde5c7e4db0933e0b6469f9e778e71e28

❯ "G:\\msys64\\clang64\\bin/jj.exe" --version
jj 0.38.0-2508982cde5c7e4db0933e0b6469f9e778e71e28

Verification

Windows Version

MINGW64_NT-10.0-26100

Are you willing to submit a PR?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions