LoginSignup
16

More than 5 years have passed since last update.

Bash on Ubuntu on Windows トラブル集

Last updated at Posted at 2016-09-27

Bash on Ubuntu on Windows トラブル集

cygwin から Bash on Ubuntu on Windows への移行作業を行うにあたり、起きたトラブルとその解決策を記載していきます。
まだまだ移行中なので随時追記します。

sudo を実行すると警告が出る

色々なところですでに言及されています1が、 sudo を実行すると以下のような警告が表示されました。

sudo: unable to resolve host MSEDGEWIN10

hosts に hostname を追記することで解決しました。

解決策

/etc/hosts127.0.0.1hostname を追記します。

apt update / install でリポジトリにつながらない (ただし、 curl だとつながる)

インストールが完了して早速、 apt update をしようとしたら以下のようなエラーが出てリポジトリにつながりませんでした。

sudo apt update
[sudo] password for kobanyan:
Err http://archive.ubuntu.com trusty InRelease
Err http://archive.ubuntu.com trusty-updates InRelease
Err http://security.ubuntu.com trusty-security InRelease
Err http://archive.ubuntu.com trusty Release.gpg
  Could not resolve 'archive.ubuntu.com'
Err http://security.ubuntu.com trusty-security Release.gpg
  Could not resolve 'security.ubuntu.com'
Err http://archive.ubuntu.com trusty-updates Release.gpg
  Could not resolve 'archive.ubuntu.com'
Reading package lists... Done
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/InRelease
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/trusty-security/InRelease
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg  Could not resolve 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/Release.gpg  Could not resolve 'archive.ubuntu.com'
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/trusty-security/Release.gpg  Could not resolve 'security.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.

ただし、

curl http://archive.ubuntu.com

を実行するとつながります。
apt install はというと、一見インストールできそうですが同様のエラーが出ました。

Issues を検索したところ同様の現象が 報告 されており、
私の環境でも報告者と同様に Symantec Endpoint Protection のファイアウォールで遮断されていました。
ファイアウォールを無効にすることでつながるようになりました。

解決策

セキュリティソフトのファイアウォールで遮断されていないか確認し、遮断されているようならば無効化する。

chsh でログインシェルを変更しても起動時に bash で起動する

chsh で zsh に変更しましたが、起動時に相も変わらず bash が起動します。
こちらも Issues に 報告 があり、自前で zsh を呼び出してやる方法が紹介されています。
また、 Qiita では /bin/bash 自体を置き換えるという 記事 もありました。

解決策

  1. .bashrc 内で zsh を呼び出す。
  2. bash.exe 起動時のコマンドとして引き渡す。
    bash.exe ~ -c /bin/zsh
  3. /bin/bash を置き換えてその中で zsh を呼び出す

2,3の方法では bash が実行されずに zsh が呼び出されるので、これらの方が挙動が近そうです。
ただし、いずれの方法でも $SHELL/bin/bash のままなので、一長一短なようです。

zsh 起動時に警告が出る (umask のデフォルトが 0000)

設定を進めていくと zsh 起動時に以下のような警告が表示されました。

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

指示に従い compaudit を実行すると、 git リポジトリからクローンしてきた zsh プラグインのディレクトリが表示されました。
該当のディレクトリのパーミッションを確認すると 777 です。
どうやらディレクトリ作成時のパーミッションのデフォルトがそうなって (umask 0000) しまっているようです。
こちらも Issues に 報告 がありました。
umask の値を変更することで警告が表示されないようになりました。

解決策

umask 0002

.bashrc 内で呼び出す。

Windows から編集したファイルが Ubuntu で開けなくなる

Ubuntu on Windows の各種ファイルは %LOCALAPPDATA%\lxss に存在しているため、ここ以下にあるファイルを直接 Windows から編集することができます。
しかし、編集・保存した直後から Ubuntu では操作不可になってしまいました。

$ ls -l
ls: cannot access sample.txt: Input/output error
total 188
drwxr-xr-x 2 kobanyan kobanyan  0 Oct  1 23:04 .
drwxr-xr-x 2 root     root      0 Dec 31  1969 ..
-????????? ? ?        ?         ?            ? sample.txt

Issues に 報告 があるように、 Windows と Ubuntu でのファイルシステムの差異により、この問題が発生しているようです。
Ubuntu から Windows のファイルを操作するための経路として /mnt が用意されているので、 Windows から Ubuntu のファイルを操作するのではなく、 Ubuntu から Windows のファイルを操作するようにしなくてはならないようです。

解決策

Windows から Ubuntu のファイルを直接操作してはならず、 /mnt 経由でファイルの共有を行う。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16