Windows 10でLinuxを使う (その16) - ファイル名で大文字と小文字を区別して使う(未来編)

【連載】

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

【第116回】Windows 10でLinuxを使う (その16) - ファイル名で大文字と小文字を区別して使う(未来編)

[2018/03/06 09:40]後藤大地 ブックマーク ブックマーク

サーバ/ストレージ

Windowsでは大文字と小文字は区別しない動作がデフォルト

Linuxユーザーである本連載の読者ならば、当然Linuxではファイル名の大文字と小文字は区別して扱われていることを知っていると思う。例えば「hoge.txt」というファイルと「HOGE.txt」というファイルは別のファイルだ。

しかし、Windowsでは話が違う。現在主に使われているWindowsのファイルシステムでは、機能上は大文字と小文字を区別して扱っているが、互換性のためにこうしたファイルを操作するためにAPI側が大文字と小文字を区別しない動きをデフォルトにしている。以前は大文字と小文字を区別していなかったためだ。

試しに、WSLで次のようにWindowsのファイルシステム(DrvFs経由)のほうにhoge.txtとHOGE.txtというファイルを作ってみる。当然、Linuxからはこのファイルは異なる別のファイルとして扱える。

WSL側からWindowsのファイルシステム上でhoge.txtとHOGE.txtというファイルを作る

今度はWindows側からこのファイルにアクセスしてみる。すると次のように、hoge.txtというHOGE.txtという2つのファイルは異なったものとして認識されるものの、実際にファイルにアクセスするとHOGE.txtのみがアクセスできていることを確認できる。hoge.txtへのアクセスはHOGE.txtへのアクセスになっているわけだ。

Windows側からは異なるファイルとして確認できるものの、実際には片方のファイルにしかアクセスできない

Windowsには既に大文字と小文字を区別した動作をするようにする機能も用意されているが、この機能を有効にするとドライブ全体で大文字と小文字を区別して動作するようになるため、もしかすると既存のアプリケーションでいろいろと問題が発生する可能性がある。まるごと設定を変更するというのはリスキーだ。

それならば、WSL側で大文字と小文字を区別する必要があるような名前付けをしなければよいことになる。まさにその通りなのだが、Microsoftがこうした挙動をWindows側で解決する機能を実装してきたので、取り上げておこうと思う。

Insider Build 17093からはディレクトリごとに大文字小文字区別を設定可能

Microsoftは2018年2月28日(米国時間)、「Per-directory case sensitivity and WSL - Windows Command Line Tools For Developers」において、Windows Insider Build 17093から、ディレクトリごとに大文字と小文字を区別するかどうかの設定が行えるようにしたと発表した。この機能を利用することで、WSLからのWindows側のファイルの扱いを改善すると説明している。

MicrosoftはWindows Insider Build 17107からディレクトリごとに大文字と小文字を区別したり、またはどちらに設定されているのか確認したりするためのコマンドとして「fsutil.exe」ファイルを追加したと説明している。利用方法は次の通りだ。

● fsutil.exeコマンドを使って大文字小文字区別の有効無効を確認する方法

fsutil.exe file queryCaseSensitiveInfo パス

● fsutil.exeコマンドを使って大文字小文字区別を有効化

fsutil.exe file setCaseSensitiveInfo パス enable

● fsutil.exeコマンドを使って大文字小文字区別を無効化

fsutil.exe file setCaseSensitiveInfo パス disable

fsutil.exeコマンドの使用例 - 資料: Microsoft提供

WSL側から大文字・小文字の区別の設定をどう利用するかは、DrvFsマウント時にオプションとして指定できる。今のところ「case=dir」「case=off」「case=force」を指定することができ、/etc/wsl.confにオプションを書いておける。しかし、最終的にはデフォルトの動きがこのディレクトリ別大文字・小文字区別設定を利用するようになりそうなので、ユーザー側は特に気にしなくてもいつの間にかうまいこといっている、といった状況になるように見える。

WindowsはUNIX系のOSとは挙動が異なる点がいくつかあるので、今回のような改善が必要になる。しかし、状況はかなり良さそうだ。MicrosoftはWSLに関連する機能の開発に取り組み続けている。次のアップデートで、WSLはさらに実用性を増すことになりそうだ。

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

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
3515
2
【連載】にわか管理者のためのLinux運用入門 [116] Windows 10でLinuxを使う (その16) - ファイル名で大文字と小文字を区別して使う(未来編)
Linuxユーザーである本連載の読者であれば、当然Linuxではファイル名の大文字と小文字は区別して扱われていることを知っていると思う。hoge.txtというファイルとHOGE.txtというファイルは別のファイルだ。しかし、Windowsでは状況が違っている。もともと大文字と小文字を区別していなかったので、今でも互換性の関係でその動きが残っている。WSLとの兼ね合いでは問題になる部分なのだが、Microsoftは開発版でこの問題を解決する機能を導入してきた。今回はこの辺りについて紹介する。
https://news.mynavi.jp/itsearch/files/mynavi20151210_linux_300-250.jpg
Linuxユーザーである本連載の読者であれば、当然Linuxではファイル名の大文字と小文字は区別して扱われていることを知っていると思う。hoge.txtというファイルとHOGE.txtというファイルは別のファイルだ。しかし、Windowsでは状況が違っている。もともと大文字と小文字を区別していなかったので、今でも互換性の関係でその動きが残っている。WSLとの兼ね合いでは問題になる部分なのだが、Microsoftは開発版でこの問題を解決する機能を導入してきた。今回はこの辺りについて紹介する。

会員登録(無料)

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

一覧はこちら

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

一覧はこちら

ページの先頭に戻る