Basic bash, node, and npm setup on Windows

April 14, 2017

I never thought this would be something I'd be writing about but it's actually super exciting. This has been a major bane when trying to dev on my Windows machines. A lot of developer tools installation instructions walk you through some terminal commands, then the Windows people are all commenting at the bottom trying to figure out what additional steps need to be taken to make it work on Windows. This is crazy, and I'm glad Microsoft recognized this was a problem and included a bash prompt on Windows 10.

When I first installed it and launched it, I didn't quite get it. I was in a ~ home directory but it wasn't my Windows home directory which I kind of expected. I was in the home directory of this Ubuntu VM that has been booted to provide a bash prompt. I searched around and found that if you want to access your Windows home folder through the bash prompt, you'd have to:

cd /mnt/C/Users/<USER NAME>

Ok, now I can do an ll command there and see all my files, just as I'm used to when working with Linux and Macs. Pretty exciting!

Now, I don't want to cd to my Windows home every time I login. To get around this, I edited my .bashrc file with an alias. The .bashrc file is in the home (~) folder of the Ubuntu VM.

alias home='cd /mnt/C/Users/jfitz/Workspace' home

This sets an alias for home so anytime I want to go back to this directory I can just type "home". It also executes so that when bash starts up I'm already in my Windows home directory.

Working with node and npm

I tried to install create-react-app via npm and got the following error.

npm ERR! Linux 3.4.0+ npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "create-react-app" npm ERR! node v7.4.0 npm ERR! npm v4.0.5 npm ERR! path /usr/lib/node_modules npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/lib/node_modules' npm ERR! { Error: EACCES: permission denied, access '/usr/lib/node_modules' npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'access', npm ERR! path: '/usr/lib/node_modules' } npm ERR! npm ERR! Please try running this command again as root/Administrator.

Turns out, this is a permissions issue that can be easily rectified.

sudo chown -R $(whoami) ~/.npm sudo chown -R $(whoami) /usr/lib/node_modules sudo chown -R $(whoami) /usr/bin

The future

It would be absolutely bonkers if you could launch Windows apps from the bash terminal. So say I'm in my Workspace folder, I'd be able to open up Sublime text or PHP Storm from the bash terminal. I looked into this situation and there is an issue thread on Github. This comment is pretty promising:

The project definitely has its issues, but its very promising to see Microsoft trying to make this work. I think we're another year or two off from having a super solid *nix development environment in Windows.