# Usable shell on Windows (yay!)

**URL:** <https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988>\
**Category:** General Usage\
**Tags:** shell\
**Created:** [September 19, 2017, 11:28pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988 "2017-09-19T23:28:41Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [September 19, 2017, 11:28pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988/1 "2017-09-19T23:28:41Z")

</div>

You might know about it already, but in case you don’t: the git bash is very usable with Julia. (The default  
on Windows is for Julia to run in a normal Windows terminal, which means the shell commands don’t work as expected.)

 ![image](https://global.discourse-cdn.com/julialang/original/3X/c/3/c342ae1a2edf6628ad00d7e33cabf505c9f511b0.png)

---

<div class="post-metadata">

**Author:** ![NickNack](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nicknack/32/1792_2.png) [@NickNack](https://discourse.julialang.org/u/NickNack)\
**Post date:** [September 20, 2017, 3:05pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988/2 "2017-09-20T15:05:07Z")

</div>

Wow. There is a [shell mode](https://en.wikibooks.org/wiki/Introducing_Julia/The_REPL#Shell_mode) in the Julia REPL. As a Windows user, I never knew. TIL. 🙂

---

<div class="post-metadata">

**Author:** ![NickNack](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nicknack/32/1792_2.png) [@NickNack](https://discourse.julialang.org/u/NickNack)\
**Post date:** [September 20, 2017, 4:09pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988/3 "2017-09-20T16:09:15Z")

</div>

OK, so I played around with this for a while. Shell commands work now (yay! indeed), but I had/have two issues so far:

- All fonts looked extremely blocky even though I enabled TrueType fonts on installation of git. Increasing font smoothing in the console options fixed this.
- Keyboard shortcuts for copy/paste are ctrl+insert and shift+insert by default. This is a deal breaker for me. I absolutely need these bound to ctrl-c and ctrl-v. I could easily rebind ctrl-c and ctrl-v with Autohotkey which I have running anyway, but that would mess up SIGINT in the Julia REPL. I don’t have a solution for this.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [September 20, 2017, 4:35pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988/4 "2017-09-20T16:35:50Z")

</div>

True, on both counts.

I have solved the problem of the copy/paste by rebinding voice commands. (I program using voice recognition.)

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [September 20, 2017, 5:03pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988/5 "2017-09-20T17:03:24Z")

</div>

Ctrl-Shift-c/v are available for copy/paste.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [September 20, 2017, 5:19pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988/6 "2017-09-20T17:19:17Z")

</div>

Try this:

1. edit the configuration file to read  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/9/3/93732d430341b328d0ce2bb4a7be03bd25be31ae.png)  
Note the added, highlighted, option.
2. enable the following options  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/0/1/011e310867632c0453dff3905312f22cb7ca228b.png)

Et voila, you have Ctrl-c/v for copy/paste. The drawback is that now to interrupt you have to type Ctrl-Shift-c.  
A trade off…

---

<div class="post-metadata">

**Author:** ![NickNack](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nicknack/32/1792_2.png) [@NickNack](https://discourse.julialang.org/u/NickNack)\
**Post date:** [September 20, 2017, 6:27pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988/7 "2017-09-20T18:27:15Z")

</div>

Thanks, I should be able to live with Ctrl-Shift-c for SIGINT.

---

<div class="post-metadata">

**Author:** ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)\
**Post date:** [September 21, 2017, 5:46pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988/8 "2017-09-21T17:46:01Z")

</div>

Mac user here but sometimes I code Julia on my Surface Pro. When I do, I use the Linux Subsystem for Windows 10. If you’re on that version of windows, it worth checking out, works great. It runs Ubuntu or SUSE under Win 10 so you get `bash`.

> **[Install WSL](https://learn.microsoft.com/en-us/windows/wsl/install)**
>
> Install Windows Subsystem for Linux with the command, wsl --install. Use a Bash terminal on your Windows machine run by your preferred Linux distribution - Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine, and more are available.

As for the Terminals themselves, I usually go with ConEmu:

> **[ConEmu - Handy Windows Terminal](https://conemu.github.io)**
>
> ConEmu-Maximus5 is a full-featured local terminal for Windows devs, admins and users. Get better console window with tabs, splits, Quake style, copy+paste, DosBox and PuTTY integration, and much more.

But Babun ([http://babun.github.io](http://babun.github.io)) and cmder ([http://cmder.net](http://cmder.net)) are good choices too.

These things have oh-my-zsh integration and with real `bash` it’s a powerful combination. Being a Linux subsystem you can install all the Ubunutu goodies via `apt-get`.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [September 21, 2017, 10:43pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988/9 "2017-09-21T22:43:52Z")

</div>

That is a good point.

---

<div class="post-metadata">

**Author:** ![John\_Hearns](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/john_hearns/32/1685_2.png) [@John\_Hearns](https://discourse.julialang.org/u/John_Hearns)\
**Post date:** [September 22, 2017, 12:41pm UTC](https://discourse.julialang.org/t/usable-shell-on-windows-yay/5988/10 "2017-09-22T12:41:04Z")

</div>

Not detracting from what @essenciary says, I find MobaXterm to be the nightwear preferred by all right thinking feilines.

> **[MobaXterm free Xserver and tabbed SSH client for Windows](https://mobaxterm.mobatek.net/)**
>
> The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!
