WSL新機能: ファイル名で大文字と小文字を区別して使う

【連載】

にわか管理者のためのLinux運用入門

【第133回】WSL新機能: ファイル名で大文字と小文字を区別して使う

[2018/07/03 08:00]後藤大地 ブックマーク ブックマーク

サーバ/ストレージ

パスの大文字と小文字を区別しないデフォルト動作

2018年春のWindows 10のアップデートで、Windows 10にfsutil.exeというツールが導入された。C:\WINDOWS\system32\fsutil.exeにデプロイされている。

■Windows 10 2018年春のアップデートで導入されたfsutil.exeユーティリティ

PS C:\Users\daich> Get-Command fsutil.exe | Format-List


Name            : fsutil.exe
CommandType     : Application
Definition      : C:\WINDOWS\system32\fsutil.exe
Extension       : .exe
Path            : C:\WINDOWS\system32\fsutil.exe
FileVersionInfo : File:             C:\WINDOWS\system32\fsutil.exe
                  InternalName:     fsutil.exe
                  OriginalFilename: fsutil.exe.mui
                  FileVersion:      10.0.17134.112 (WinBuild.160101.0800)
                  FileDescription:  fsutil.exe
                  Product:          Microsoft® Windows® Operating System
                  ProductVersion:   10.0.17134.112
                  Debug:            False
                  Patched:          False
                  PreRelease:       False
                  PrivateBuild:     False
                  SpecialBuild:     False
                  Language:         日本語 (日本)




PS C:\Users\daich>

このツールを使うと、フォルダに設定されている大文字/小文字区別機能の有無をチェックすることができる。次の例ではC:\Users\daich\Documents\Linux\は大文字と小文字を区別しない設定になっていることがわかる。

PS C:\Users\daich> fsutil.exe file queryCaseSensitiveInfo C:\Users\daich\Documents\Linux
ディレクトリ C:\Users\daich\Documents\Linux の大文字と小文字を区別する属性が無効になっ
ています。
PS C:\Users\daich>

例えば、このWindowsのファイルシステム上にあるC:\Users\daich\Documents\Linux\以下に、WSLからファイルを作成してみる。test.txtとTEST.TXTというファイルを作成してみると、後から作成したTEST.TXTのみが存在することが確認できる。

daichi@DESKTOP-DVVLKV9:~$ echo test > /mnt/c/Users/daich/Documents/Linux/test.txt
daichi@DESKTOP-DVVLKV9:~$ echo TEST > /mnt/c/Users/daich/Documents/Linux/TEST.TXT
daichi@DESKTOP-DVVLKV9:~$ ls -l /mnt/c/Users/daich/Documents/Linux/
total 0
-rw-rw-rw- 1 daichi daichi 5 Jun 30 19:06 test.txt
daichi@DESKTOP-DVVLKV9:~$ cat /mnt/c/Users/daich/Documents/Linux/test.txt
TEST
daichi@DESKTOP-DVVLKV9:~$ cat /mnt/c/Users/daich/Documents/Linux/TEST.TXT
TEST
daichi@DESKTOP-DVVLKV9:~$

これはWindows 10からも同じで、作成したファイルにアクセスしても、最後に作成したTEST.TXTしか存在しないことが確認できる。

PS C:\Users\daich> dir .\Documents\Linux\


    Directory: C:\Users\daich\Documents\Linux


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2018/06/30     19:06              5 test.txt


PS C:\Users\daich> more .\Documents\Linux\test.txt
TEST

PS C:\Users\daich> more .\Documents\Linux\TEST.TXT
TEST

PS C:\Users\daich>

Linuxはファイルシステム名前空間において大文字と小文字を区別する。つまり、LinuxのベースとしてWindows 10のファイルシステムを利用するWSLでは、このまま利用していては問題が出ることになる。ベースとなるWindows 10のファイルシステムが大文字/小文字を区別できないようでは、Linux側で同じ名前で大文字と小文字だけが異なるといったファイルを同じディレクトリ下に作成できないからだ。

パスの大文字と小文字を区別する設定

Windows 10 2018年春のアップデートで、Windows 10においてフォルダごとにファイルパスの大文字と小文字を区別するかどうかを設定できるようになった。デフォルトでは大文字と小文字を区別しないものの、必要な場合には区別できるようになる。従来の互換性を維持しつつ、WSLのように必要に応じて大文字と小文字を区別する動作を利用できる仕組みだ。

設定の変更は次のようにfsutil.exeコマンドで実行する。次のように実行すると指定したフォルダ以下が大文字と小文字を区別するようになる。

PS C:\Users\daich> fsutil.exe file setCaseSensitiveInfo .\Documents\Linux\ enable
ディレクトリ C:\Users\daich\Documents\Linux\ の大文字と小文字を区別する属性が有効にな
っています。
PS C:\Users\daich>

逆に設定を解除して大文字と小文字を区別しないようにするには、次のようにfsutil.exeコマンドを実行する。

PS C:\Users\daich> fsutil.exe file setCaseSensitiveInfo .\Documents\Linux\ disable
ディレクトリ C:\Users\daich\Documents\Linux\ の大文字と小文字を区別する属性が無効にな
っています。
PS C:\Users\daich>

例えば、C:\Users\daich\Documents\Linux\を大文字と小文字を区別するように設定してから、次のようにWSLで作業を行うと、test.txtというファイルもTEST.TXTというファイルも両方とも存在していることを確認できる。

daichi@DESKTOP-DVVLKV9:~$ echo test > /mnt/c/Users/daich/Documents/Linux/test.txt
daichi@DESKTOP-DVVLKV9:~$ echo TEST > /mnt/c/Users/daich/Documents/Linux/TEST.TXT
daichi@DESKTOP-DVVLKV9:~$ ls -l /mnt/c/Users/daich/Documents/Linux/
total 0
-rw-rw-rw- 1 daichi daichi 5 Jun 30 19:10 TEST.TXT
-rw-rw-rw- 1 daichi daichi 5 Jun 30 19:10 test.txt
daichi@DESKTOP-DVVLKV9:~$ cat /mnt/c/Users/daich/Documents/Linux/test.txt
test
daichi@DESKTOP-DVVLKV9:~$ cat /mnt/c/Users/daich/Documents/Linux/TEST.TXT
TEST
daichi@DESKTOP-DVVLKV9:~$

同じフォルダをWindows 10から確認すると、次のように2つのファイルが存在することを確認できる。

PS C:\Users\daich> dir .\Documents\Linux\


    Directory: C:\Users\daich\Documents\Linux


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2018/06/30     19:10              5 TEST.TXT
-a----       2018/06/30     19:10              5 test.txt


PS C:\Users\daich> more .\Documents\Linux\test.txt
test

PS C:\Users\daich> more .\Documents\Linux\TEST.TXT
TEST

PS C:\Users\daich>

例えば、WSL側からWindows 10のユーザーフォルダ以下にファイルを展開して利用するようなケースでは、大文字と小文字を区別していないと問題があることもある。このように大文字を小文字を区別する設定を有効にすれば、そういった場合にも問題なく利用できる。

Windows 10 春のアップデートとWSL

Windows 10 2018春のアップデートでは、WSLに関係するさまざまな機能が改善された。今回のアップデートで取り込まれたWSL関連機能の多くは、パフォーマンスの改善といったものではなく、WSLを利用するために不便とされている部分の対応、といった内容になっている。WSLを普段使いするために必要となる機能の実装が進んだアップデート、ということが言えそうだ。

WSLを利用するにあたって必要になる機能はまだ存在しており、次のアップデートでも同じように基盤機能の改善が取り込まれるのではないかと見られる。パフォーマンス、特にWSLから利用するときのファイルシステムパフォーマンスの向上などはさらに先のアップデートで取り込まれるのではないかと考えられる。

WSLは確実にWindows 10にとっても欠かすことのできない機能になってきていると感じる。Linuxを利用するならWindows 10のノートPCがいいよね、という話が日常的に行われるのはそう遠い先の話ではなさそうだ。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
3848
2
【連載】にわか管理者のためのLinux運用入門 [133] WSL新機能: ファイル名で大文字と小文字を区別して使う
Windows 10ではパスの大文字と小文字を区別して扱う機能を備えているものの、デフォルトでは区別しない動作になっている部分が多い。これはWSLとの共存という点では問題があるのだが、2018年春のWindows 10アップデートでこの問題を解決する機能が導入された。
https://news.mynavi.jp/itsearch/files/mynavi20151210_linux_300-250.jpg
Windows 10ではパスの大文字と小文字を区別して扱う機能を備えているものの、デフォルトでは区別しない動作になっている部分が多い。これはWSLとの共存という点では問題があるのだが、2018年春のWindows 10アップデートでこの問題を解決する機能が導入された。

会員登録(無料)

注目の特集/連載
AI人材に必要なもの
DMM.make AKIBAから生まれたスタートアップたち
はじめてのRPA導入
教えてカナコさん! これならわかるAI入門
RPA入門
PowerShell Core入門
Swagger 3.0 入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
クラウドアンケート

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る