Ubuntu Linux 和 Bash 作为 Windows 程序!

作者:Dave Taylor

Ubuntu Bash shell 作为 Windows 应用程序?太棒了!以下是如何进行操作。

多年来,Microsoft 一直统治着操作系统领域,看到如此多的计算机运行着各种版本的 Microsoft Windows,真是令人震惊。2017 年 5 月,Microsoft 宣布其装机量已达 14 亿。当然,现在也有超过十亿台设备运行 Android,但如果您使用的是台式机或笔记本电脑,那么它很可能运行的是某个版本的 Microsoft Windows。

Microsoft 并没有忽视操作系统的其他世界——尽管他们花了很长时间才放弃 Windows Mobile 并接受 Android——因此,当我读到下一个版本的 Windows 10 将包含一个简单的应用程序,让您运行 Linux shell 时,我感到非常高兴。

无需复杂的安装,无需双启动,无需您需要配置的虚拟机——只需在 Microsoft Store 中找到一个简单的应用程序,然后点击运行程序,随时扩展您对 Bash 或 Linux 的知识。

某种程度上是这样。

在撰写本文时,该应用程序要求您加入早期发布计划(加入是免费的,您将成为下一个 Windows 10 版本的 Beta 测试人员),但一旦您注册并运行早期发布版本,它确实是一个下载即用的程序。

但是,当您阅读本文时,我作为 Win10 早期版本运行的内容应该已经是最新的公开更新,因此该障碍将消失。

要开始使用,您需要启用适用于 Linux 的 Windows 子系统(它还允许您运行其他 Linux 发行版,而且非常酷),但首先在 Microsoft Store 中搜索“Ubuntu”以查找 Windows 上的 Ubuntu Linux。该应用程序还支持最新版本的 Ubuntu:16.04 LTS。

单击启动安装后的程序,您将看到如图 1 所示的窗口。

图 1. Ubuntu 作为 Windows 应用程序?太棒了!

有趣的是,一些标准的 Linux 命令返回空值——例如 who am i——但大多数命令都能正常工作,甚至在我新创建的主目录 /home/taylor 中也有点文件。

这是一个 Bash 登录 shell。您可以通过几种不同的方式确认您自己的 shell,但我喜欢这个命令:ps $$

您是否好奇系统如何识别自身?uname -a 是获取版本的标准 Linux 命令,它揭示了这个有趣的信息


$ uname -a
Linux VirtuaPC 4.4.0-43-Microsoft #1-Microsoft
 ↪Wed Dec 31 14:42:53 PST 2014
x86_64 x86_64 x86_64 GNU/Linux

VirtuaPC 确实是一个虚拟机系统(如果您好奇,可以在 Microsoft.com 下载中心了解更多信息),它都是安装的一部分,对我们用户来说都是隐藏的。谢天谢地;VM 安装可能很难正确配置。

Bash 本身呢?通过使用 --version 标志很容易识别版本


$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
 ↪<http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

版本 4.3.11 相当新,尽管在撰写本文时,GNU 归档文件显示最新版本是 4.4(您可以访问 这里 查看最新版本)。

更好的是,您不再像 1980 年代后期那样使用命令行,因为默认的 TERM 向程序标识自身时不是 ANSI,而是 xterm-256color。这意味着您可以将颜色包含在 ls 输出、grep 结果等等中。它看起来是否美观且易于辨认是另一回事。

让我们试一试——见图 2。

图 2. /bin 的内容,采用绚丽的 256 色

更改字体大小、窗口配色方案等等很棘手,因为 Windows 中的 Ubuntu 程序没有 UI。也很难进入 Windows 系统上运行的 Ubuntu 服务器的底层 X Window 系统,因此在 .Xdefaults 中更改设置的标准技巧将不起作用。

幸运的是,您至少可以使用 setterm 命令在一定程度上改进配色方案,然后删除默认别名以去除笨拙的 ANSI 颜色。此命令会产生更易于阅读的终端屏幕


setterm -term linux -back white -fore black -clear

Ubuntu 或 Microsoft,有人将其设置为“白色”实际上是非常浅的灰色,因此结果非常吸引人。问题是,运行一个知道如何以颜色输出的命令,事情会很快变得非常糟糕,正如您在图 3 中看到的那样,当我尝试 ls -a 时。

图 3. 新配色方案,被 LS 覆盖

但是,打开 ~/.bashrc 文件,您会发现像 ls 这样的命令具有强制使用颜色的别名。您也可以使用 alias 命令检查这一点


$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo
terminal || echo error)" "$(history|tail -n1|sed -e
 ↪'\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'alias
 ↪egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

解决方案是进入 ~/.bashrc 并注释掉(在每行前面加上 # 符号)所有这些别名,您将非常接近 Windows/Ubuntu 配置的理想状态。

我一直遇到的最后一个问题是 vi 编辑器(是的,不是 emacs)默认使用颜色的能力。打开像我的 .profile 这样的文件,它会变成失控的颜色汤,完全无法阅读,正如您在图 4 中看到的那样。

图 4. Vi 的配色方案令人毛骨悚然!

同样,这是可以修复的。这次,您需要在您的主目录中创建一个名为 .vimrc 的新文件,其中包含以下单行内容


syntax off

令人困惑的是,syntax 是以不同颜色解析和显示不同的文件元素。无法看清屏幕来创建此文件?在 vi 中输入以下内容


:syntax off

它将关闭所有疯狂的颜色效果。

在实际的设置或首选项选项可用之前,这些少量调整将使您能够更好地使用和轻松阅读 Windows 中的 Ubuntu 窗口。

试一试,如果您发现如何使字体变大或任何其他有用的配置调整,请在下面的评论中告诉我,稍后我将根据最佳用户提交内容重新审视本文。

Dave Taylor 在 UNIX 和 Linux 系统上破解 shell 脚本已经很长时间了。他是 Learning Unix for Mac OS XWicked Cool Shell Scripts 的作者。您可以在 Twitter 上通过 @DaveTaylor 找到他,您可以通过他的技术问答网站联系他:Ask Dave Taylor

加载 Disqus 评论