bash for windows初体验

技术博客 / 运维   2016-08-06 17:25:07  阅读量: 6316
  windows   Bash  

win10周年更新终于推送了bash for windows Beta版,自己更新后第一时间也尝试了下,写一下体验,感觉如果以后功能完整的话,完全可以取代虚拟机,windows上的开发环境友好度也能和MacOS叫板。

官方对bash for windows的说明是:

Windows provides developers with a familiar Bash environment. This environment will allow users to:

  1. Run common command line utilities such as grep, sed, and awk

  2. Navigate the file system using these commands

  3. Run bash shell scripts which rely on supported command line utilities

  4. Windows is running Ubuntu user-mode binaries provided by Canonical. This means the command line utilities are the same as those that run within a native Ubuntu environment.

This is provided as beta software. While many of the coreutil commands provided by Ubuntu will work, there are some that will not. We welcome feedback and will prioritize accordingly.

看官方说明,这个bash算是windows下的一个ubuntu子系统,可以使用linux下的常用命令,运行shell脚本,看样子就是能在windows中使用linux环境,看样子微软的目标还是那些使用虚拟机或者Mac的开发者,如果功能能做好的话,确实是个非常不错的开发工具。

安装说明可以参考https://msdn.microsoft.com/en-us/commandline/wsl/install_guide,基本上进行win10周年版升级后都可以使用,但从应用商店下载时要看人品,我下了五次才下下来~~

然后从powershell或者cmd输入bash,就可以进入这个子系统:

看路径和文件名应该进入了C盘“我的文档”文件夹。

df查看文件系统:

hill@USER-PC:/mnt/c/Users/User$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
rootfs         124563172 52875808  71687364  43% /
tmpfs          124563172 52875808  71687364  43% /run
none           124563172 52875808  71687364  43% /run/lock
none           124563172 52875808  71687364  43% /run/shm
none           124563172 52875808  71687364  43% /run/user

在C盘中搜了一下,这个文件系统的位置应该在C:\Users\User\AppData\Local\lxss里

rootfs下的文件夹如下:

基本确认ubuntu的文件系统就放在这。

查看Ubuntu版本:

hill@USER-PC:/mnt/c/Users/User$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty

查看CPU信息:

hill@USER-PC:/mnt/c/Users/User$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
      8  Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz

查看内存:

hill@USER-PC:/mnt/c/Users/User$ free -m
             total       used       free     shared    buffers     cached
Mem:         16319       7299       9019         17         33        184
-/+ buffers/cache:       7082       9237
Swap:         1024          0       1024

可见,这个Ubuntu子系统使用的就是PC机的i7处理器和16G内存,相对于虚拟机需要重新分配硬件资源而言,这个子系统能充分利用PC机的硬件资源,可以最大化的发挥性能,这一点可以和MacOS相比了。

然后使用中发现,在/mnt目录下,挂载了原有的系统硬盘:

hill@USER-PC:/mnt$ ls -rlt
total 36
drwxrwxrwx 2 root root 0 Aug  3 22:19 d
drwxrwxrwx 2 root root 0 Aug  3 22:19 e
drwxrwxrwx 2 root root 0 Aug  3 22:48 c
drwxrwxrwx 2 root root 0 Aug  6 09:31 f

有了这个挂载,能想到的好处有两个:

  1. 能利用系统硬盘资源进行存储,无须担心存储资源的问题

  2. 可以对现有系统上的文件使用Linux的方法进行处理,比如使用shell脚本批处理,比如使用grep、awk、sed处理文本,想想也是蛮excited的。

使用中发现可以使用apt-get来管理应用包,也是蛮方便的

且系统已经安装了python2.7,python3,GCC,也可以自行安装java:

hill@USER-PC:/mnt$ python -V
Python 2.7.6
hill@USER-PC:/mnt$ python3 -V
Python 3.4.3
hill@USER-PC:/mnt$ java -version
java version "1.7.0_101"
OpenJDK Runtime Environment (IcedTea 2.6.6) (7u101-2.6.6-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
hill@USER-PC:/mnt$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

可以用apt-get安装pip:

hill@USER-PC:/mnt/c/Users/User$ pip -V
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)

然后就可以使用pip管理python包,尝试将Django环境用pip安装好,试一下能不能把我的个人网站在这个子系统中跑起来,

先后安装MySql,MySQLdb,Django,DjangoUeditor和django_compressor。

在本地起Django服务,输入http://127.0.0.1:8000,在windows的浏览器中可以看到:  

可见,页面显示正常,证明在这个子系统中可以正常使用Django,mysql等组件,且网络的设置应该和当前PC是一致的,不用重新再设置。ps查看进程:

hill@USER-PC:/mnt/f/data/bash$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0  2432 ?        00:00:00 /init
hill         2     1  0  2432 ?        00:00:00 /bin/bash
hill        98     1  0  2432 ?        00:00:00 /bin/bash
root      5408     1  0  2432 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql     5755  5408  0  2432 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/va
hill      5957     2  0  2432 ?        00:00:12 find / -name *.sock
hill      5977    98  0  2432 ?        00:00:00 python manage.py runserver
root      5985     1  0  2432 ?        00:00:00 /usr/bin/python /usr/bin/pip install appconf
hill      6071    98  0  2432 ?        00:00:00 python manage.py runserver
hill      6074  6071  0  2432 ?        00:00:00 /usr/bin/python manage.py runserver
hill      6079     2  0  2432 ?        00:00:00 ps -ef

可见Django、mysql这些服务都已经起来。

PS,这个bash的配色还真是不错,加上半透明效果使用vim还是蛮不错的,当然,windows的shell字体依然丑到哭

除了尝试了Django开发环境,也试了ssh,git等功能,都能正常使用,用作基本的开发环境应该已经足够了。

总的来看,这个子系统还是蛮实用的,可以在windows下使用基本独立的linux环境,且可以完全使用pc机的硬件和存储资源。能在windows下使用linux命令,shell脚本,部署linux开发环境,对于开发来说,还是能提高不少效率的,至少可以替代虚拟机,使用也要方便不少。