我在 Windows 10 上下载了 Linux Bash Shell,但遇到了两个问题。首先,我尝试将我之前的所有代码移动到主目录,但在 bash 终端中看不到任何这些文件。只有当我在 bash shell 中复制并粘贴这些文件时,它才有效。我该怎么做呢?我不想每次都将脚本保存在其他地方并手动将它们复制到我的主目录中。
无论如何,我决定将这些脚本保留在原处,并从我的主目录创建指向它们位置的快捷方式。假设我放置所有文件的目录名为 XXX,该目录中有三个文件夹,YYY、ZZZ 和 AAA。我打开 bash 终端并使用 创建了一个快捷方式ln -s /mnt/c/Users/.../XXX
。正如预期的那样,XXX 出现在我的主目录中。我用 cd XXX 打开了快捷方式,它确实将我带到了 XXX,但是当我尝试从那里访问 YYY 时,却无法访问。
当我输入 时cd YYY
,我被带到~/XXX/YYY/
,但当我使用 ls 检查 YYY 中的文件时,我发现 YYY 的内容完全相同,即 XXX,这意味着我在 YYY 目录中看到了 YYY 和 ZZZ。我再次尝试,使用 cd YYY,它将我带到~/XXX/YYY/YYY/
,等等。我永远无法进入 YYY 文件夹。ZZZ 也出现了同样的情况 感谢任何能解决我的两个问题的人
答案1
我猜这只是一个缺陷。
虽然我并不是说这是一个绝对可靠的答案,保证正确,但我的答案的基础不仅仅是一些盲目的尝试。当我安装微软的 Windows 版 bash 时,该软件指向https://aka.ms/wsldocs查阅文档。当我去那里时,我读到:
这是作为测试版软件提供的。虽然 Ubuntu 提供的许多 coreutil 命令都可以使用,但有些命令则不行。
“coreutils”包中包含一些相当简单的命令,例如:* pwd(GNU coreutils 手册:pwd)仅输出“当前工作目录”,相当于在 DOS 或 Windows CMD * cat 中运行“cd”(不带参数)GNU coreutils 手册:cat),它只是输出流(如文件),相当于在 DOS 或 Windows CMD * head 中运行“type”(GNU coreutils 手册:头部,输出前 10 行(或其他指定的行数)
以及另一个(可能与该问题最相关): * ln (GNU coreutils 手册:ln,创建符号链接
所有这些程序通常都被认为相当简单,但其中许多程序对于执行一些基本任务而言是相当必要的,因此它们被归入这个称为“核心”实用程序的软件包。由于 Microsoft 已声明这些程序尚未完全发挥作用,这意味着此 bash 版本实际上尚未准备好迎接黄金时段。因此,当他们说该软件是“测试版”时,他们确实是这个意思。
在我看来,符号链接的子目录尚未得到完全支持。除非您打算修复 Microsoft 仍存在问题的代码,否则我建议您等待。或者尝试一些替代方案。我并不是说其中任何一个都能完全满足您的要求,但我认为所有这些都比 Microsoft 的 Linux->Windows 翻译“子系统”代码存在的时间更长。因此,如果使用 Microsoft 最新发布的代码会让您感到沮丧,那么这些可能更可靠一些,因此玩起来可能更有趣。
- 赛格威
- NTFS 文件系统:特别是名为 Junctions 的功能
- 温什(我自己发布的一些软件)
-
MSYS 核心实用程序
- (我的 winsh 页面提供了一些有关 DLL 文件的信息,以便轻松完成工作)
- 我见过一个 90,624 字节的“ln.exe”,我相信它来自那里。不过我还没玩过。也许这会更好地与 Microsoft 的 bash 版本配合使用?或者可能不会。