在 Windows 上试用 Ubuntu 上的 Bash 评估版

大家好,
我是Mandai,Wild团队负责开发工作的成员。

我个人认为今年夏天最大的话题是 Windows 10 中的 Bash 支持,你们觉得呢?

自2016年Build大会发布以来,相关信息并不多,所以我很好奇它究竟会是什么样子。不过,我发现可以通过安装Windows 10预览版来体验正在开发中的Bash,所以我决定试一试,并想在此分享一下我的体验。


 

设置预览版安装环境。

在典型的 Windows 10 环境下,您需要等到正式版安装后才能使用 Bash,所以
“在 LAVIE Hybrid ZERO 上提前体验 Windows 版 Ubuntu 上的 Bash | 数字生活部”加入了 Windows Insider Preview 计划。
我完全信任这篇文章中提供的详细设置信息,而且一切运行正常。

公告上说最新的开发者预览版还需要几天时间才能发布,但
令我惊讶的是,第二天我就收到了最新开发者预览版的更新通知。

重启几次后,安装成功完成。

内部预览版

 

我遇到了“请输入UNIX用户名”的问题。

于是,我决定启动 bash,当我按下 Windows 键并输入“bash”时,屏幕上出现了“Windows 版 Ubuntu 上的 Bash”字样!
启动后,出现了一个与命令提示符无异的控制台屏幕。

然而,日语环境并不完整,字符乱码,我无法理解上面写的内容,因此我对“请输入 UNIX 用户名”的提示感到困惑。

bash_01

综上所述

输入 root 即可无需密码登录!

原来如此。毕竟只是预览版,
细节就不用太在意了。

 

Windows C 盘挂载在 /mnt/c 目录下

目录结构有点让人摸不着头脑。
如果 /mnt/c 在 C 盘,那么 / 到底在哪里呢?这确实是个问题,但毕竟这只是个预览版。

虽然我是 root 用户,但我的行为却像超级用户一样,无法访问“文档和设置”区域(权限被拒绝)。

 

当我对一个文件名包含日语的文件运行 ls 命令时,输出结果会被截断一半。

总的来说,似乎还没有实现对多字节字符的支持。`df`
命令无法正常工作,
所以我无法验证这一点。我想这在所难免,因为内核不是 Linux 内核。
如果能将这类问题公开显示出来就方便多了。

 

当我输入 ps 命令时,几乎没有进程在运行。

不要指望 `ps` 命令的功能与任务管理器相同。Bash
环境和 Windows 环境似乎是完全独立管理的。

ps_aux

 

你究竟能走多远?

于是,我安装了一些软件,看看它在这个阶段有多大用处。

 

SSH

远程主机可以访问,基于密钥的身份验证工作正常。

 

sed

它是默认安装的,而且运行良好。

 

awk

它是默认安装的,而且运行良好。

 

它是默认安装的,而且运行良好。

 

顶部

它默认安装并且可以正常工作,但除了进程 ID (PID) 之外没有其他信息可用。

bash_2

 

grep

它是默认安装的,而且运行良好。

 

wget

它是默认安装的,而且运行良好。

 

卷曲

它默认安装且运行正常。
但是请注意,非HTTP通信(例如FTP)尚未经过测试。

 

ping

它是默认安装的。
但是,我无法发送 ping 命令,因为它显示消息“ping icmp open socket: Socket type not supported”。

ping

 

netstat

它默认安装且运行正常。
但是,屏幕上没有任何显示,可能是由于套接字通信中断导致的。

 

Shell脚本

已提供 Bash 和 dash。
顺便一提,由于它是从 Ubuntu 移植过来的,所以 `/bin/sh` 是指向 `/bin/dash` 的符号链接。(这与 Ubuntu 中的做法相同。)

 

阿帕奇

安装成功,但程序无法运行。
由于套接字创建不正确而导致启动失败。

apache2_start

 

PHP

apt-get install php5

 
它可以通过 apt-get 安装。
由于 php5-curl 和其他命令行工具也可以通过 apt-get 安装,因此它们应该可以正常工作。

 

从控制台发送电子邮件

如果邮件命令未安装,请使用以下命令安装。

apt-get install mailutils

 
但是,邮件命令不起作用。

 

MySQL

可以使用以下命令进行安装。

apt-get install mysql-server

 
它会动!(正常情况下也会动)

但是,屏幕上显示以下错误:

/etc/init.d/mysql start df: 警告:无法读取已挂载文件系统的表:没有该文件或目录 /lib/lsb/init-functions.d/50-ubuntu-logging: 第 5 行: 46 已中止(核心已转储) plymouth --ping > /dev/null 2>&1 * 正在启动 MySQL 数据库服务器 mysqld /lib/lsb/init-functions.d/50-ubuntu-logging: 第 5 行: 485 已中止(核心已转储) plymouth --ping > /dev/null 2>&1 [ OK ] * 正在检查需要升级、已损坏或未正常关闭的表。.

mysql_start

 

概括

令我惊讶的是,curl 和 wget 居然都能正常工作。考虑到我可以用 apt-get 安装软件,我想 TCP/IP 通信应该已经达到了可以实现的程度。
然而,ping 命令却无法运行,这让我很意外。
这说明我其实并不真正理解那些我每天习以为常使用的命令的工作原理。

MySQL 运行正常让我感到意外。
不过,启动 MySQL 服务器时出现了一个错误,所以我不能指望它完美运行。
即使停止并重新启动后数据仍然保留,甚至在关闭电脑后数据也依然存在,所以它似乎在某种程度上是可以工作的。

照这个速度,我觉得从控制台连接 PHP 和 MySQL 的工具应该能正常工作了。
但是,my.cnf 文件中指定的套接字文件并没有生成,netstat 也显示 3306 端口没有被使用。
此外,还有很多错误日志,所以我猜测这个操作相当不稳定。

 

你现在可以做什么

检查简单的批处理?不,我们甚至连测试环境都没有。目前我们最多只能在无需 Cygwin 或 Git Bash 的情况下使用 SSH。
从 MSP 的角度来看,在 Windows 上使用 Ubuntu 的 bash 进行监控会很有用,这使我们能够像在 Linux 上一样执行验证任务,但即便如此,目前也还无法实现,因此很难评估其效果,但我认为这是一大进步。
如果它运行正常,可能会彻底改变我们监控 Windows 的方式。

 
就这样。

如果您觉得这篇文章对您有帮助,请点个“赞”!
0
加载中...
0票,平均分:0.00/10
641
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但幸运的是,我也有机会参与其他各种任务,包括市场营销。
我在Beyond中的图像版权采用CC0协议。