我已成功在 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 文件