Edited at

Windows10 bashの導入+色々遊んでみる

More than 3 years have passed since last update.


はじめに

本記事ではInsider Previewのfastを利用してbuild14316のインストールを行い

bashを利用すると言った内容になっています。


build14316のインストール


Insider Previewの有効化

Insider Preview fastを利用するための手順です


Inside Programへの参加

https://insider.windows.com/

まずはこちらのページでmicrosoftアカウントでログインし

Insider Programに参加します


Microsoftアカウントとの関連付け

次に【windowsボタン】→【設定】→【更新とセキュリティ】→【Windows Update】→ 【詳細オプション】から開始するボタンをクリックし

Microsoftアカウントでログインを行います。

win10.png


開発者向け機能を使用する

【windowsボタン】→【設定】→【更新とセキュリティ】→【開発者向け】

から開発者モードのチェックを入れる

eac389e124ed1b41dd358b33ddb88211.png


Insider Previewのレベル選択

バーを右端まで持っていってInsider Previewのレベルをファーストにします

fast.png

再起動を促されるので再起動を行います


build14316のインストール

しばらくするとbuild14316のダウンロード&インストールが開始され再起動を促されるので再起動を行います

自分の環境だと上記設定を行ってからbuild14316が降ってくるまで4日程かかりました


更新プログラムのチェックを自分で行ってみたり再起動を繰り返していると良いかもしれません


bashを使ってみる


bashの有効化

【コントロールパネル】→【プログラム】→【Windowsの機能の有効化または無効化】からWindows Subsystem for Linuxにチェックを入れてOKをクリック

linuxbate.png

暫くすると再起動を促されるので再起動を行います。


bashの起動

再起動完了後コマンドプロンプトを起動し

bashコマンドを実行

```bash

C:\Users\John>bash

-- Beta feature --

This will install Ubuntu on Windows, distributed by Canonical

and licensed under its terms available here:

https://aka.ms/uowterms

Type "y" to continue:

```

使用許諾の画面が出てくるのでyを入力。

bash_init.png

ファイルシステムのダウンロードが始まり暫くするとコマンド入力が出来るようになります。


色んなコマンドを使ってみる


git,vim

root@localhost:~# git clone https://github.com/god/man.git

Cloning into 'man'...
remote: Counting objects: 38, done.
remote: Total 38 (delta 0), reused 0 (delta 0), pack-reused 38
Unpacking objects: 100% (38/38), done.
Checking connectivity... done.

root@localhost:~# ls
man

root@localhost:~# cd man

root@localhost:~/man# vim apple_products.txt
###apple_products.txt
function eat()
{
if (is_innocent){
insertKnowledges([Good, Evil]);
}else{
goto fail;
}

removeKnowledges([Good, Evil]); // Avoid side effects
return true;

fail:
logoutFromGarden();
}

普通に使えますね


ネットワークコマンド


ssh

root@localhost:~# ssh hoge@192.168.11.250

hoge@192.168.11.250's password:
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Apr 10 21:07:30 2016 from 192.168.11.9
hoge@raspi ~ ❯❯❯

手元のraspberrypiに繋いでみましたが問題無さそうです。


traceroute

root@localhost:~# traceroute

The program 'traceroute' can be found in the following packages:
* inetutils-traceroute
* traceroute
Try: apt-get install <selected package>

無いのでインストールします

root@localhost:~# apt-get install -y traceroute

実行

root@localhost:~# traceroute 8.8.8.8

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
setsockopt IP_MTU_DISCOVER: Invalid argument

だめみたいですね…


dig


root@localhost:~# dig google.com
socket.c:2447: setsockopt(20, SO_TIMESTAMP) failed: Invalid argument
socket.c:1915: internal_send: 8.8.8.8#53: Invalid argument
socket.c:2447: setsockopt(21, SO_TIMESTAMP) failed: Invalid argument
socket.c:2476: setsockopt(21, IPV6_RECVPKTINFO) failed: Invalid argument
socket.c:1915: internal_send: fec0:0:0:ffff::1#53: Invalid argument
socket.c:2447: setsockopt(22, SO_TIMESTAMP) failed: Invalid argument
socket.c:2476: setsockopt(22, IPV6_RECVPKTINFO) failed: Invalid argument
socket.c:1915: internal_send: fec0:0:0:ffff::2#53: Invalid argument
socket.c:1915: internal_send: 8.8.8.8#53: Invalid argument
socket.c:1915: internal_send: fec0:0:0:ffff::1#53: Invalid argument
socket.c:1915: internal_send: fec0:0:0:ffff::2#53: Invalid argument
socket.c:1915: internal_send: 8.8.8.8#53: Invalid argument
socket.c:1915: internal_send: fec0:0:0:ffff::1#53: Invalid argument
socket.c:1915: internal_send: fec0:0:0:ffff::2#53: Invalid argument

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> google.com
;; global options: +cmd
;; connection timed out; no servers could be reached
root@localhost:~#

nslookup も試してみたんですけど名前引けてないっぽい?


curl

root@localhost:~# curl google.com

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.jp/?gfe_rd=cr&amp;ei=UUkKV-CVG-fZ8Afh24HAAQ">here</A>.
</BODY></HTML>


ping,ifconfig,ip addr show,ip link

root@localhost:~# ifconfig

Warning: cannot open /proc/net/dev (No such file or directory). Limited output.
root@localhost:~# ip addr show
Cannot open netlink socket: Invalid argument
root@localhost:~# ip link
Cannot open netlink socket: Invalid argument
root@localhost:~# ping google.com
ping: icmp open socket: Socket type not supported

こっちもダメでしたね


感想

今回確認した中だと

- git,vim,ssh,curlは使える

- 日本語ディレクトリ等は文字化けしてる

- 日本語入力に対応してない (mozcとか入れたら出来るかも?要検証)

- ネットワークコマンドはエラーだらけ(原因とか分かる方居れば教えてください)

と言った感じですね。

自分のようなヘボエンジニアだとまだまだ使い物にならない言った感想です。

ただ、まだベータ版なのでどんどん改良されるでしょうし正式リリース版は結構期待しています。

rbenv使ってruby動かしてみたり、rails動かしてみたり色々遊んでみようかと思います。


おまけ

そうだsl動くのかな

root@localhost:~# apt-get install -y sl

root@localhost:~# sl
Command 'sl' is available in '/usr/games/sl'
The command could not be located because '/usr/games' is not included in the PATH environment variable.
sl: command not found

PATH通せって怒られる

bash

root@localhost:~# vim .bashrc

.bashrcに追記

bash:.bashrc

export PATH=/usr/games:$PATH

root@localhost:~# source .bashrc

root@localhost:~# sl

sl.png

動きましたね