Showing posts with label BASH on Windows. Show all posts
Showing posts with label BASH on Windows. Show all posts

Thursday, April 07, 2016

Bash on Windows– 10 Things I Learned Today

I’ve been playing today with Bash on Windows 10. I blogged earlier about how to install it. Now to getting down to use it. I spent a few hours today as a NEW to Bash user and found some differences. If you know Linux,  you may find some of these obvious but they do represent a difference new to Bash folks will find.

1. BOW is case sensitive  LS is not the same as ls. Windows is not case sensitive, so LS and ls are the same.

2. Getting help for a command is different and inconsistent between commands. In some cases it's <cmd> -h, some times <cmd> --h, or <cmd> --help, etc. Each command has its own way of providing help.    

3. The Unix MAN help system is alive and well in Bash. Type man <cmd name> for help. However, this takes you into a pager, from which you type q to escape.

4. You don’t have a graphical text editor in Bash. But you do have VI, and you can easily install emacs (apt-get install emacs23).

5. The Linux and Windows file systems are different. Windows has no single root, but a bunch of volumes C: d:, etc. With Linux there is one unified filesystem '/' with everything underneath it. 

6. You can see the windows file system from bash /mnt/c is c:, /mnt/d would be d:, etc. But interop is limited. It would be nice to be able to edit, say, over in Windows but use over in bash. That doesn't really work fully. You can, for example, mkdir /xxx from the bash side, and that folder shows up in windows. But create a file in windows and you can't see it from bash. I suspect this is a work in progress.

7. No GWMI Win32_Processor, instead cat /proc/cpuinfo , or  grep Intel /proc/cpuinfo (nb grep intel /proc/cpuinfo fails! - see rule 1)

8. The error messages are quite different.

9. Type Man Man and you can see where PowerShell help ideas came from!

10. Type the wrong command and you can often be told which where to find it (eg, type lsf and see what it offers you)

And since I can’t count well,

11. Getting packages is different - You use apt-get. apt-get install emacs, for example. PowerShellGet is modelled on APT-Get, it feels!

This is fun!

Installing BASH on Windows 10

Well – I now have Bash running on Windows 10. Turns out to be pretty easy!

The first thing to do is to get the latest Insider build – you need 14316. This build is not yet available for ISO downloads (although I suspect that that will come soon), so you need to get the update. You just go to the Settings setting and change over to get the Insider builds (make sure you specify the fast ring) and let it download. Something like this:

 

 

image

After downloading the update and doing a reboot brings up the new build. After tuning on the developer features, you then go over to Control Panel and Select the Windows Subsystem for Linux ( Beta). Like this:

image

Once WSL is installed, you get the obligatory reboot, then just run Bash. The first time you run Bash, it lets you know that you need to load the Bash Shell itself:

 

image

 

Once that is done, you can start typing Linux commands:

image

 

But here’s is the screen shot I love (and a tip of the hat to Paul Adare):

image

Bash on Windows. Real Bash. And all the tools. Including apt-get. WOW – if I did not know better, I’d wonder if Hell had frozen over.

Saturday, April 02, 2016

Bash on Windows

Hell has truly frozen over. Or something like that. At //BUILD this week, Microsoft announced Bash on Windows. I was listening to the keynote over the Internet and watching Twitter. As I listened to the keynote, I kept asking ‘why?’  Jeffrey Snover tweeted, to the effect that I’d get it eventually. As usual he was right.

I get it, now.

I read a great blog post (http://www.hanselman.com/blog/DevelopersCanRunBashShellAndUsermodeUbuntuLinuxBinariesOnWindows10.aspx) and watched two videos today that helped. The first video is an overview to the feature, with Rich Turner and Russ Alexander (https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/). It explains the feature well! The other one was a panel discussion from the BUild conference narrated by Scott. Get this at: https://channel9.msdn.com/Events/Build/2016/C906.  And here’s another good blog post from Canonical’s Dustin Kirkland: http://blog.dustinkirkland.com/2016/03/ubuntu-on-windows.html.

So why does this matter and what’s the big deal.

Let’s start with how the feature is architected. When you run Bash on Windows, AKA BOW, you are running a pure Linux (Ubuntu) userspace. It is bit for bit Ubuntu, with the Linux kernel replaced by a new Windows subsystem that implements the Linux system calls. It looks like, acts like, and to all intents is Linux. On Windows. I find the solution quite elegant.

So who would want it? Well – Microsoft via UserVoice, concluded there were a lot of  developers who were developing apps for Linux server, for example a Ruby on Rails based web site.  They use Emacs and a variety of tools to edit the source code, check it into a repository (Git), and push it up to the cloud (azure). They use other tools to do the building, unit testing, etc. The open source environment is rife with tools that a canny developer can leverage.

These Linux server devs (I hesitate to use the acronym LSDs) currently use Linux client systems. WIth WOW, they can now use ALL the tools they used to, from a command prompt they know, leveraging the Linux package community as they always have – but you are running all that on top of Windows.

That enables a couple of things. First, it will simplify the management of the developer workstation. It can now be Windows (with AD, GPOs, etc, etc), but with the power to run the developer’s normal workflow unencumbered by Windows. But at the same time, the dev can Alt-Tab to Outlook, the Edge browser, leverage Office and that huge library of windows applications. The best of two worlds.

Another interesting aspect – it turns the developer’s desktop into a Windows License. Linux at the from door, Windows by the back door. Or something like kthat

I like the concept. It’s certainly NOT for everyone – but I can see there there is a market.  I suspect that, cool as this is, there is a lot more to come here.