kledgeb UbuntuやLinuxの最新情報を紹介

WSL その155 - ディレクトリーごとに大文字・小文字を区別する機能の改善

ディレクトリーごとに大文字・小文字を区別する機能の改善

「Build 17692」では、ディレクトリーごとにファイル名の大文字・小文字を区別する機能が改善されました。


ファイル名と大文字・小文字の区別

「WSL」では、「Linux」のようにファイル名(ディレクトリー名含む)の大文字・小文字を区別してファイルを扱うことができます。

一方以前の「Windows」では、「Windowsアプリ」はファイルシステムを大文字・小文字の区別なしに扱うため、大文字・小文字のみが異なるファイルに「Windows」からアクセスすることができませんでした。

ディレクトリーごとの大文字・小文字の区別

この状況を改善するため、ディレクトリーごとに大文字・小文字を区別する機能が導入されました。

  • ディレクトリーごとにファイル名の大文字/小文字の区別の有無を設定可能に・大文字/小文字の区別の有無を設定するには

これにより「WSL」及び「Windowsアプリ」から大文字・小文字のみが異なるファイルにアクセスできるようになりました。
通常「Linux」の開発者は、ファイルシステムが大文字・小文字を区別することを期待しているため、「WSL」から「Windowsのボリューム(DrvFs)」上にディレクトリーを作成すると、デフォルトで大文字・小文字を区別するディレクトリーを作成します。

Windowsアプリに対する副作用

ディレクトリーごとに大文字・小文字を区別する機能が一部の「Windowsアプリ」に意図しない影響を与えました。

一部の「Windowsアプリ」では、ファイルシステムが大文字・小文字を区別しないことを前提にファイルを参照します。
例えばファイル名をすべて大文字もしくは小文字に変換してファイルを参照するアプリがこれに該当します。
このようなアプリは、大文字・小文字を区別するディレクトリー内のファイルにアクセスすることができません。

長期的な観点では、この問題に対する好ましい解決策は、アプリ側で大文字・小文字の区別を意識した実装に修正することです。
しかし必ずしもアプリが修正されるとは限りませんし、ユーザーによっては、普段利用するアプリがこの問題に該当しており、アプリが修正されるまで待ち続けるというのも現実的な選択肢ではないでしょう。

加えて「Windowsアプリ」が大文字・小文字を区別するディレクトリー内にサブディレクトリーを作成すると、そのサブディレクトリー内のファイルは大文字・小文字の区別が無効になります。
この振る舞いにより、大文字・小文字を区別するディレクトリー内でWindowsのソフトウェアと連携した作業が困難になります。

大文字・小文字を区別する機能の改善

上記を踏まえ、大文字・小文字を区別する機能に2つの改良が行われました。

一つは「WSL」内で大文字・小文字の区別の有無を制御するLinux拡張属性の導入です。
もう一つは、新規に作成されたディレクトリーに大文字・小文字の区別の有無を示すフラグの継承です。

1.Linux拡張属性を利用して大文字・小文字を区別する機能を制御する

「Build 17692」では、Linux拡張属性を利用して大文字・小文字を区別する機能の調査や制御が可能になりました。

拡張属性

大文字・小文字の区別を制御する拡張属性名は「system.wsl_case_sensitive」です。
この拡張属性の値が「0」ならば、そのディレクトリーは大文字・小文字を区別しません。
この拡張属性の値が「1」ならば、そのディレクトリーは大文字・小文字を区別します。

attrのインストールを

拡張属性にアクセスするには、事前に「attr」パッケージをインストールしておきます。
以下のコマンドを実行すれば、「attr」パッケージをインストールできます。

sudo apt install attr


大文字・小文字の区別の有無を調べるには

「WSL」から大文字・小文字の区別が有効になっているかどうか調べるには、以下のコマンドを実行します。

getfattr -n system.wsl_case_sensitive <ディレクトリーのパス>

大文字・小文字の区別が有効なディレクトリーならば、以下のように出力されます。


大文字・小文字の区別が無効なディレクトリーならば、以下のように出力されます。


大文字・小文字の区別の有無を指定するには

既存のディレクトリーに対し、大文字・小文字の区別の有効・無効を切り替える方法です。
大文字・小文字の区別を有効にするには、以下のコマンドを実行します。

setfattr -n system.wsl_case_sensitive -v 1 <ディレクトリーのパス>


大文字・小文字の区別を無効にするには、以下のコマンドを実行します。

setfattr -n system.wsl_case_sensitive -v 0 <ディレクトリーのパス>


注意事項

大文字・小文字区別の設定の変更に関し、いくつか注意事項があります。

アクセス権に注意

大文字・小文字の区別の設定を変更するには、ディレクトリーに対し以下のアクセス権が必要になります。

  • 属性の書き込み
  • ファイルの作成
  • フォルダーの作成
  • サブフォルダーとファイルの削除

これらのアクセス権は「Windows」のアクセス権です。

またユーザープロファイルの外側のフォルダーでは、たとえ自分が所有者のディレクトリーであっても、上記のすべてのアクセス権が付与されているとは限りません。
もし設定変更時にパーミッションエラーが発生した場合は、上記のアクセス権が設定されているか確認してください。

サブフォルダー以下にアクセスしていないこと

大文字・小文字の区別の設定を変更する前に、そのディレクトリー以下のディレクトリーを「WSL」から開いていないか(アクセスしていないか)確認してください。
さもないと設定に失敗します。

すでに大文字・小文字のみ異なるファイルが存在している場合

すでにディレクトリー内に大文字・小文字のみ異なるファイルが存在している場合、大文字・小文字の区別を無効することはできません。

ディレクトリーごとに大文字・小文字を区別する機能をサポートしていないファイルシステム

現在ディレクトリーごとに大文字・小文字を区別する機能は、ローカルの「NTFS」ボリュームでのみ利用可能です。
「FAT」や「SMB」といったファイルシステムでは、ディレクトリーごとに大文字・小文字を区別する機能をサポートしていないため、この拡張属性を利用できません。
 

2.大文字・小文字の区別の継承

以前の「Build」では、新規に作成するディレクトリー毎に、大文字・小文字を区別するフラグを明示する必要がありました。

この振る舞いが変更され、ディレクトリーを新規に作成する時、大文字・小文字を区別するフラグを親ディレクトリーから継承するようになりました。
つまり大文字・小文字を区別するフラグが設定されているディレクトリー内でサブディレクトリーを作成すると、そのサブディレクトリーも大文字・小文字を区別するようになります。


これにより大文字・小文字を区別するディレクトリー内で、もっと簡単にWindowsのツールを活用できるようになりました。
例えば大文字・小文字を区別するディレクトリー内に「tar.exe」でアーカイブを展開すると、アーカイブから展開されたすべてのディレクトリーも大文字・小文字を区別するディレクトリーになります。

DrvFsと大文字・小文字区別のマウントオプション

以前紹介したように、「DrvFs(Windowsボリューム)」をマウントする際、マウントオプションを指定し、大文字・小文字区別のデフォルトの振る舞いを設定することができます。

  • case=off
  • case=dir

「case=off」では、デフォルトで大文字・小文字の区別を行いません。
「case=dir」では、デフォルトで大文字・小文字の区別を行います。
どちらのオプションでも大文字・小文字区別のフラグが設定されている既存のディレクトリーでは、大文字・小文字を区別してファイルを扱います。

この点は従来から変わりませんが、今回の改良により、より柔軟な大文字・小文字区別の運用及び活用が可能になります。
例えば「case=off」を指定すれば、ユーザーは大文字・小文字を区別したいディレクトリーに対してのみ、大文字・小文字の区別を明示的に指定することができます。

case=offを推奨

これからは「case=off」が推奨になり、大文字・小文字の区別が必要なディレクトリーは、ユーザーが明示的にその指定を行うことになります。
こうすることで影響を受けている「Windowsアプリ」との互換性を最大限維持しつつ、大文字・小文字の区別に影響を受けない「Windowsアプリ」との柔軟な連携も可能になります。

将来の「Build」では、何もマウントオプションが指定されなかった時は「case=off」が指定されたものとして扱うように変更されます。
現在の「Build」で自動マウントされるWindowsボリュームのマウントオプションを変更するには、「wsl.conf」にマウントオプションを記述します。

[automount]
options = case=off

「wsl.conf」に関しては、以下を参照してください。

  • Set WSL launch settings
  • WSL起動時に各種設定を自動的に適用可能に

WSL
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 26.04 その74 - Chromium 系ブラウザーにより、Qt6 で構築されたアプリがクラッシュする現象
    Qt6 で構築されたアプリがクラッシュする現象 Chromium 系ブラウザーにより、Qt6 で構築されたアプリがクラッシュする現象が報告されています。
  • Ubuntu 24.04 その104 - Ubuntu 26.04 LTS へアップグレードするには・アップグレードの注意事項
    Ubuntu 26.04 LTS へアップグレードするには 現在 Ubuntu 24.04 LTS を利用しているユーザーは、Ubuntu 26.04 LTS へアップグレードできます。
  • Ubuntu 26.10 その35 - RISC-V 向け Ubuntu Desktop 登場
    RISC-V 向け Ubuntu Desktop 登場 Ubuntu Desktop 26.10 では、RISC-V 向けデスクトップイメージがリリースされます。
  • Ubuntu 24.04 その103 - Ubuntu 26.04 LTS へアップグレード可能に・2年分の変化が一気にやってくる
    Ubuntu 26.04 LTS へアップグレード可能に 2026年9月29日、Ubuntu 24.04 LTS から Ubuntu 26.04 LTS へアップグレード可能になりました。
  • Ubuntu 26.10 その34 - Ubuntu と Rust に対する取り組み(2026年10月)
    Ubuntu と Rust に対する取り組み 2026年10月1日、Ubuntu と Rust に対する取り組みが以下で紹介されました。
  • Ubuntu 26.10 その33 - Ubuntu 26.10 β版がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 β版がリリースされました 2026年10月1日、Ubuntu 26.10 β版 がリリースされました。
  • Ubuntu 26.04 その76 - CVE-2026-92392 含む curl の脆弱性22件修正・アップデートを
    curl の脆弱性22件修正 CVE-2026-92392 含む22件の curl の脆弱性に対応したセキュリティーアップデートがリリースされました。
  • Ubuntu 26.10 その38 - Ubuntu 26.10 がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 リリース 2026年10月15日、Ubuntu 26.10 がリリースされました。
  • Linux その440 - uutils coreutils 0.11.0 でコマンド実行時のエラーメッセージを大幅に改良
    コマンド実行時のエラーメッセージを大幅に改良 uutils coreutils 0.11.0 で、コマンド実行時のエラーメッセージが大幅に改良されました。
  • Ubuntu 26.10 その32 - Snapdragon X2 に対応した Ubuntu 26.10 実験版登場
    Snapdragon X2 に対応した Ubuntu 26.10 実験版登場 2026年9月29日、Snapdragon X2 に対応した Ubuntu 26.10 実験版が登場しました。
記事のピックアップ
オプション