为什么 Windows 上的 bash 会说“没有这样的文件或目录”?

Don*_*mmy 2 windows bash shell windows-10 windows-subsystem-for-linux

我正在尝试在 Windows 上使用 bash 运行我的 shell 脚本,但它说没有这样的文件。该文件肯定存在(我从命令行检查了它)

# Tried all of these, and they all fail
bash C:/Users/myuser/Testing/my_script.sh
bash /c/Users/myuser/Testing/my_script.sh
bash -c /c/Users/myuser/Testing/my_script.sh
bash C:\Users\myuser\Testing\my_script.sh
Run Code Online (Sandbox Code Playgroud)

我只是得到:

/bin/bash: C:/Users/myuser/Testing/my_script.sh: 没有那个文件或目录

该文件确实存在:

dir C:\myuser\Testing\my_script.sh
Run Code Online (Sandbox Code Playgroud)

驱动器 C 中的卷是 Windows 卷序列号是 XXXX-XXXX

C:\myuser\Testing\my_script.sh 目录

08/15/2019 10:42 AM 7,783 my_script.sh
1 文件 7,783 字节
0 目录 370,855,380,416 字节空闲

bash 版本:

bash --version
Run Code Online (Sandbox Code Playgroud)

GNU bash,版本 4.4.19(1)-release (x86_64-pc-linux-gnu)
版权所有 (C) 2016 Free Software Foundation, Inc.
许可证 GPLv3+:GNU GPL 版本 3 或更高版本http://gnu.org/licenses /gpl.html

这是免费软件;您可以自由更改和重新分发它。
在法律允许的范围内,不提供任何保证。

bash which bash
Run Code Online (Sandbox Code Playgroud)

/bin/bash

使用 Windows 10,从cmdshell运行。

Don*_*mmy 8

这很难找到/找出答案,因为大多数示例都显示访问“C”驱动器,/c/Users/myuser但由于它将 linux 子系统视为“某种”不同的操作系统,因此需要安装该驱动器。所以正确的路径是:/mnt/c/Users/myuser/Testing/my_script.sh

bash /mnt/c/Users/myuser/Testing/my_script.sh
Run Code Online (Sandbox Code Playgroud)

关键是/mnt一开始。