在 Windows SUA(Unix 应用程序系统)中,我无法让 KSH 运行命令。甚至 ls 也失败了

在 Windows SUA(Unix 应用程序系统)中,我无法让 KSH 运行命令。甚至 ls 也失败了

我已成功在 Windows 7 Ultimate 中安装 Windows SUA(Unix 应用程序子系统)。我可以c:\windows\sua\common直接从 cmd.exe 运行命令,但我想尝试从 korn shell 运行命令。如果我在搜索框中输入 ksh,我会在开始菜单中看到 ksh。但当我尝试从那里运行命令时,我收到错误。

我看到如果我单击开始并输入 ksh,那么我会看到位于 c:\windows\SUA\common\ksh.bat 中的 ksh.bat

当我运行 ksh.bat 然后执行echo $PATH

我看到的目录包括/dev/fs/C/Windows/SUA/common:/dev/fs/C/Windows/SUA/usr/lib

ls.exe我在这里记录一下

C:\Windows\SUA\common>dir ls.exe<ENTER>
01/18/2008  05:40 AM           174,592 ls.exe

但是当我运行 ksh.bat 然后尝试运行时ls,它说

$ ls
/bin/ksh: ls: not found
$ cd
$
$

答案1

我现在在开始菜单中看到一个条目“基于 UNIX 的应用程序子系统”,但奇怪的是它没有出现橙色突出显示(新条目通常会出现),所以我没有注意到它。这里它被展开了。

在此处输入图片描述

从那里选择 Korn Shell,打开它。它运行以下行C:\Windows\posix.exe /u /c /bin/ksh -l

然后 ls 就可以了

而单独运行 ksh.bat 则不起作用。

该命令行和 ksh.bat 之间的区别

ksh.bat 会做posix /u /c /bin/ksh %1 %2 %3 %4 %5 %6 %7 %8 %9 什么?如果您运行没有参数的 ksh.bat,它相当于 posix /u /c /bin/ksh ie no -l(ie no dash el)

而 korn 快捷方式执行相同的操作,但带有 -l。

如果您运行 ksh -l,那么将会使用 -l 运行 ksh.bat,并且由于路径中涵盖了 c:\windows\posix.exe,查看 ksh.bat 使用的命令行,它(当使用 -l 时)与快捷方式所做的相同,因此其工作方式与快捷方式的工作方式相同。

因此,要么从快捷方式运行,要么使用 ksh -l 运行 bat 文件

先前相关问题Unix 应用程序子系统的 EXE 在哪里,我可以使用它吗?

相关内容