解决通过 Windows 资源管理器在 WSL 2 上执行 .sh 文件时出现“权限被拒绝”的问题

解决通过 Windows 资源管理器在 WSL 2 上执行 .sh 文件时出现“权限被拒绝”的问题

我在用着此方法使用 bash.exe 在 Windows 资源管理器中执行 .sh 文件:

"C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\"; cd ~; bash;"

\\wsl$\Ubuntu\home\davidg\example.sh对于我的 WSL2 Linux 发行版之外的文件,这可以正常工作,但是对于我得到的文件,例如Permission denied

我可以从 powershell 的bash.exe ./example.sh工作目录运行它,并且执行起来没有问题。

为什么会发生这种情况?我该如何解决?

更新:pushd \\wsl$\Ubuntu解决方法是从cmd.exeWindows 资源管理器中的映射驱动器而不是 UNC 路径 运行并执行 .sh 文件。

答案1

这似乎有效,但我不完全确定为什么:

"C:\Windows\System32\bash.exe" -c "bash \"./$(grep -oE '[^\\]+$' <<< '%L')\"; cd ~; bash;"

据我所知,-c由于存在一系列命令,因此必须使用 来调用对 bash 的外部调用。调用 .sh 文件得益于没有命令行选项的内部 bash 调用(即,根据手册页,仅传递对包含 shell 命令的文件的引用)。

相关内容