43 个回答

14971 版本更新部分内容。目前基本日常使用没什么问题了,ltrace、valgrind、fakeroot、fish 等命令不正常。

另外值得一提是 14965 以上版本支持运行 Windows 软件了。

内容比较乱,以后可能再整理一下。

试了一下,先放结论:

主要问题是使用 ncurses 的程序显示不正常,依赖 pty 的程序也几乎无法运行,中文支持很不好,cmd 本身也不好用,现在可用性还比较差。

性能上比 Cygwin/MSYS2 有不小的提升(提升百分之几十到一倍),但创建进程的慢的问题依然存在(启动一个 /bin/true 的时间是 Linux 下的十倍多,但其他命令没有这么大的差距),文件读写的性能和 Linux 比也有百分之几十的差距(不确定,需要在实体机测试)。日常使用时注意下应该影响不大(注意不要用 shell 的输入语法高亮或者复杂的回调命令,写脚本时尽量避免启动太多进程),但编译软件的耗时可能是 Linux 下的数倍。

不建议非发烧用户体验这个版本,希望下个版本会解决这些问题。

放张安装时的截图:

文件目录:


部分问题:
zsh 有不明原因报错,功能部分可用。(14342 版本正常了)
bash 基本没问题,ctrl-a 用不了。(14328 版本 ctrl-a 可用了)
sshd 不正常,dropbear 也不正常,分配 pty 失败。(14971 版本 sshd 正常了。14367 dropbear 正常了。)
ps 正常,ps aux、ps -ef 用不了。(14328 版本 ps aux、ps -ef 都正常了)
ping、dig 用不了。(14367 dig 正常了。14971 ping 正常了)
ifconfig、ip 等网络配置相关命令用不了(14971 可以查看网卡信息了)。
ncdu 基本正常,显示有些不正常。(14342 版本正常了)
man 往回翻页不正常。(14342 版本正常了)
percol 基本正常,有时显示混乱。(14342 版本正常了)
less 往回翻页不正常。(14342 版本正常了)
git 基本正常,类似git log分页显示的地方不正常。(14342 版本正常了)
tig 基本正常,有时会显示混乱。(14328 版本正常了)
golang 用不了。(14328 版本正常了)
df 用不了。(14367 正常了)
top、htop 用不了。(14328 版本 top、htop都正常了)
chroot 用不了。(14971 正常了)
中文显示有问题,显示不全。(14971 正常了)
无法输入中文。(14971 正常了)
权限控制无效,chmod 只能修改 ls 显示结果。(14367 正常了)

当然也有好的方面:
可以在 cmd 里直接用 bash -c 运行命令。
可以监听低于1024的端口。
ssh client 正常。
gcc、g++ 编译简单程序正常。
速度上感觉没问题,没做性能测试。
基本上不使用 ncurses,不涉及驱动层面的程序(比如 coreutils中的大部分、awk、sed、grep等)没问题。
非挂载的目录(/mnt/c 等),可以创建仅大小写不同的文件。但在外边访问只能访问到其中的一个文件(我这里试验是的在里边创建 a 和 A 两个文件,ll -i 看 inode 是不同的,在外边访问 a 和 A 都是访问的 A)。
直接把根目录换成 Archlinux 的,可以用,换之后 df 、ifconfig 命令正常了,ps 命令不正常了。但因为根分区挂载的选项是 ro 的,pacman 装不上包,因为没有 /dev/fd,makepkg 没法工作。但由此可见换任何发行版都是可以的。

性能方面:
运行机构简单脚本,和 MSYS2 以及 Virtualbox 里的 Archlinux 比较下。

因为 MSYS2 主要的性能问题出现在大量 fork 新进程的情况,先试试这种场景。

$ cat test1.sh
#!/bin/bash

for i in {1..10000};do
echo abc > $i
done

先运行几次后再测时间。

MSYS2:

goreliu@my-pc ~/t
$ time ../test1.sh
real 0m2.329s
user 0m0.437s
sys 0m1.874s
goreliu@my-pc ~/t
$ time ../test1.sh
real 0m2.268s
user 0m0.453s
sys 0m1.781s
goreliu@my-pc ~/t
$ time ../test1.sh
real 0m2.264s
user 0m0.390s
sys 0m1.796s

Bash for Windows:

root@localhost:~/t# time ../test1.sh
real 0m0.969s
user 0m0.141s
sys 0m0.828s
root@localhost:~/t# time ../test1.sh
real 0m0.984s
user 0m0.141s
sys 0m0.844s
root@localhost:~/t# time ../test1.sh
real 0m0.984s
user 0m0.109s
sys 0m0.875s

Archlinux in Virtualbox:

[goreliu@my-pc-linux t]$ time ../test1.sh
real 0m0.950s
user 0m0.013s
sys 0m0.910s
[goreliu@my-pc-linux t]$ time ../test1.sh
real 0m0.985s
user 0m0.023s
sys 0m0.917s
[goreliu@my-pc-linux t]$ time ../test1.sh
real 0m0.969s
user 0m0.023s
sys 0m0.920s

比 MSYS2 快了一倍多,和 Archlinux in Virtualbox 基本一样,提升明显。

单独测下启动进程速度:

$ cat test2.sh
#!/bin/bash

for i in {1..1000}; do
/bin/true
done

MSYS2:

goreliu@my-pc ~
$ time ./test2.sh
real 0m13.466s
user 0m2.918s
sys 0m7.981s
goreliu@my-pc ~
$ time ./test2.sh
real 0m13.005s
user 0m2.857s
sys 0m8.174s

Bash for Windows:

root@localhost:~# time ./test2.sh
real 0m6.813s
user 0m0.141s
sys 0m6.766s
root@localhost:~# time ./test2.sh
real 0m6.813s
user 0m0.234s
sys 0m6.578s

Archlinux in Virtualbox:

[goreliu@my-pc-linux ~]$ time ./test2.sh
real 0m0.605s
user 0m0.007s
sys 0m0.127s
[goreliu@my-pc-linux ~]$ time ./test2.sh
real 0m0.596s
user 0m0.007s
sys 0m0.123s
[goreliu@my-pc-linux ~]$ time ./test2.sh
real 0m0.622s
user 0m0.033s
sys 0m0.110s

比 MSYS2 还是快了一倍多,但还不到 Archlinux in Virtualbox 的十分之一,启动进程慢的特点依然存在。

在网上随便找一个 python 脚本试试(排版乱了,原地址 pypy提升pyhton脚本的执行速度及性能
import time
#xiaorui.cc
#rfyiamcool@163.com
def test(n,m):
m=m
vals = []
keys = []
for i in xrange(m):
vals.append(i)
keys.append('a%s'%i)
d = None
for i in xrange(n):
d = dict(zip(keys, vals))
return d
if __name__ == '__main__':
st = time.time()
print test(1000000,100)
print 'use:', time.time() - st

MSYS2:
两次结果是
use: 10.6651120186
use: 10.3868601322

Bash for Windows:
两次结果是
use: 8.01983714104
use: 7.75542211533

Archlinux in Virtualbox:
两次结果是
use: 10.1743168831
use: 10.2496631145


比 MSYS2 和 Archlinux in Virtualbox 都快了 20% 左右。

有时间再试试别的。

运行图形界面软件,可以参考:
slightfuture.com/how-to


如果想测试其他功能,可以在下边回复。


这个“保保留留所所有有权权利利。。”是什么鬼……

疯狂动物园的树懒梗吗……Orz