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

大家好,
我是开发团队野生队的成员 Mandai。

我个人认为今年夏天最大的话题是 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 icmp open socket: Socket type not supported”的错误信息,无法发送 ping 请求。

ping

 

netstat

它默认安装且运行正常。
但是,它不显示任何内容,可能是因为无法进行套接字通信。

 

Shell脚本

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

 

阿帕奇

我成功安装了,但是无法运行。
出现错误提示,说无法正确创建套接字,程序也无法启动。

apache2_start

 

PHP

apt-get install php5


 它可以通过 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
597
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但我也很荣幸能够从事其他各种工作,包括市场营销。
我在Beyond中的肖像权采用CC0协议。