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 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Linux Mint その292 - Linux kernel 7.0 採用の Linux Mint 22.3 リリース・システム管理ツールにカーネル管理機能追加など
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Linux その414 - KDE Plasma で実装予定の新機能や改善・絵文字の表示サイズを変更機能やディスプレイ設定画面の改善など
    KDE Plasma で実装予定の新機能や改善 2026年8月1日、KDE Plasma で実装予定の新機能や改善が以下で紹介されました。
  • Linux その422 - GNOME Boxes の再構築と未来・Flatpak のみの提供やモダンな機能の実装など
    GNOME Boxes の再構築と未来 GNOME Boxes の再構築と未来が以下で紹介されています。
  • Linux その413 - GNOME 向けアプリとアップデートの紹介・カラーピッカーやメディアプレーヤーなど
    GNOME 向けアプリとアップデートの紹介 GNOME 向けアプリとアップデートの紹介です。
  • Linux その412 - KDE 環境で大量のファイルコピー時に、ファイル処理のパフォーマンスが大幅に向上
    ファイル処理のパフォーマンスが大幅に向上 KDE 環境で大量のファイルをコピーする時に、ファイル処理のパフォーマンスが大幅に向上しました。
  • Linux その386 - Arch Linux の AUR パッケージで悪意あるコミットが続く・今度はソースコードの難読化か
    Arch Linux の AUR パッケージで悪意あるコミットが続く Arch Linux の AUR パッケージで悪意あるコミット(マルウェア)が続いています。
  • Windows その29 - Windows 向け Coreutils 登場・Coreutils のインストールやコマンドの一覧など
    Windows 向け Coreutils 登場 Windows 向け Coreutils が登場しました。
  • Kubuntu その117 - Kubuntu 26.04 LTS にもっと手厚いサポートを・最高の信頼性を誇る KDE 搭載ディストリビューションを目指して
    最高の信頼性を誇る KDE 搭載ディストリビューションを目指して Kubuntu 26.04 LTS に手厚いサポートが導入されました。
  • Linux その421 - GNOME Shell のデザイン構想と長期的な見通し
    GNOME Shell のデザイン構想と長期的な見通し GNOME Shell のデザイン構想と長期的な見通しが、以下で紹介されています。
記事のピックアップ
オプション