次の方法で共有


ケース感度を調整する

大文字 (FOO.txt) と小文字 (foo.txt) をファイル名またはディレクトリ内で区別する(大文字小文字を区別する)か、同一視する(大文字小文字を区別しない)かを決定します。

  • 大文字と小文字を区別する: FOO.txt ≠ foo.txt ≠ Foo.txt
  • 大文字と小文字を区別しない: FOO.txt = foo.txt = Foo.txt

Windows と Linux の大文字と小文字の区別の違い

Linux と Windows の両方のファイルとディレクトリを操作する場合は、大文字と小文字の区別の処理方法を調整する必要があります。

標準動作:

  • Windows ファイル システムでは、ファイル名とディレクトリ名は大文字と小文字を区別しません。 FOO.txt と foo.txt は同等のファイルとして扱われます。
  • Linux ファイル システムでは、ファイル名とディレクトリ名は大文字と小文字が区別されます。 FOO.txt と foo.txt は個別のファイルとして扱われます。

Windows ファイル システムでは、ディレクトリごとの属性フラグを使用した大文字と小文字の区別の設定がサポートされています。 標準的な動作では、大文字と小文字が区別されない設定になっていますが、属性フラグを割り当てることでディレクトリを大文字・小文字を区別するように設定し、異なる大文字・小文字のみの違いがある Linux ファイルやフォルダーを認識することができます。

これは、Windows Subsystem for Linux (WSL) ファイル システムにドライブをマウントする場合に特に当てはまる場合があります。 WSL ファイル システムで作業する場合、Linux を実行しているため、ファイルとディレクトリは既定で大文字と小文字が区別されます。

以前は、名前が大文字と小文字のみが異なるファイルがある場合、Windows アプリケーションはファイル システムを大文字と小文字を区別せず、大文字と小文字のみが異なるファイルを区別できないため、これらのファイルに Windows からアクセスできませんでした。 Windows エクスプローラーでは両方のファイルが表示されますが、選択したファイルに関係なく 1 つのファイルのみが開きます。

ファイルとディレクトリの大文字と小文字の区別を変更する

次の手順では、大文字と小文字が区別され、大文字と小文字のみが異なるファイルとフォルダーを認識するように、Windows ファイル システム上のディレクトリを変更する方法について説明します。

Warnung

一部の Windows アプリケーションは、ファイル システムが大文字と小文字を区別しないという仮定のもとに、正しい大文字小文字を用いないことがあります。 たとえば、アプリケーションでファイル名を変換して、大文字または小文字をすべて使用することは珍しくありません。 大文字と小文字が区別されるディレクトリでは、これらのアプリケーションはファイルにアクセスできなくなります。 さらに、Windows アプリケーションが、大文字と小文字を区別するファイルを使用しているディレクトリ ツリーに新しいディレクトリを作成する場合、これらのディレクトリでは大文字と小文字は区別されません。 これにより、大文字と小文字が区別されるディレクトリで Windows ツールを操作するのが困難になる可能性があるため、Windows ファイル システムの大文字と小文字の区別の設定を変更するときは注意が必要です。

現在の大文字と小文字の区別を検査する

Windows ファイルシステムでディレクトリの大文字と小文字が区別されているかどうかを確認するには、次のコマンドを実行します。

fsutil.exe file queryCaseSensitiveInfo <path>

<path>をファイル パスに置き換えます。 Windows (NTFS) ファイル システム内のディレクトリの場合、 <path> は次のようになります。 C:\Users\user1\case-test 、または既に user1 ディレクトリに存在する場合は、次のように実行できます。 fsutil.exe file setCaseSensitiveInfo case-test

大文字と小文字の区別を変更する

Windows 10 ビルド 17107 で、ディレクトリごとの大文字と小文字の区別のサポートが開始されました。 Windows 10 ビルド 17692 では、WSL 内からディレクトリの大文字と小文字の区別フラグの検査と変更を含むようにサポートが更新されました。 大文字と小文字の区別は、system.wsl_case_sensitiveという名前の拡張属性を使用して提示されます。 この属性の値は、大文字と小文字を区別しないディレクトリの場合は 0、大文字と小文字が区別されるディレクトリの場合は 1 になります。

ディレクトリの大文字と小文字の区別を変更するには、 管理者特権のアクセス許可 (管理者として実行) を実行する必要があります。 大文字と小文字を区別するフラグを変更するには、ディレクトリに対する "属性の書き込み"、"ファイルの作成"、"フォルダーの作成"、および "サブフォルダーとファイルの削除" アクセス許可も必要です。 詳細については、トラブルシューティングのセクションを参照してください

大文字と小文字が区別されるように Windows ファイル システムのディレクトリを変更するには (FOO ≠ foo)、管理者として PowerShell を実行し、次のコマンドを使用します。

fsutil.exe file setCaseSensitiveInfo <path> enable

Windows ファイル システムのディレクトリを大文字と小文字を区別しない既定値 (FOO = foo) に戻すには、管理者として PowerShell を実行し、次のコマンドを使用します。

fsutil.exe file setCaseSensitiveInfo <path> disable

ディレクトリの大文字と小文字を区別するフラグ属性を変更するには、ディレクトリを空にする必要があります。 名前が大文字と小文字のみが異なるフォルダー/ファイルを含むディレクトリでは、大文字と小文字を区別するフラグを解除することはできません。

大文字小文字の区別を引き継ぐ

新しいディレクトリを作成すると、それらのディレクトリは親ディレクトリから大文字と小文字の区別を継承します。

Warnung

WSL 1 モードで実行する場合、この継承ポリシーには例外があります。 ディストリビューションが WSL 1 モードで実行されている場合、ディレクトリごとの大文字と小文字の区別フラグは継承されません。大文字と小文字を区別するディレクトリに作成されたディレクトリでは、自動的に大文字と小文字が区別されません。 各ディレクトリを大文字と小文字を区別するように明示的にマークする必要があります

WSL 構成ファイルにドライブをマウントするための大文字と小文字の区別オプション

WSL 構成ファイルを使用して Windows Subsystem for Linux にドライブをマウントするときに、大文字と小文字の区別を制御できます。 インストールした各 Linux ディストリビューションには、 /etc/wsl.confと呼ばれる独自の WSL 構成ファイルを含めることができます。 ドライブをマウントする方法の詳細については、「 WSL 2 での Linux ディスクのマウントの開始」を参照してください。

ドライブをマウントするときに、 wsl.conf ファイルで大文字と小文字の区別オプションを構成するには:

  1. 使用する Linux ディストリビューションを開きます (例:Ubuntu)。
  2. etc フォルダーが表示されるまでディレクトリを変更します (cd .. ディレクトリからhomeする必要がある場合があります)。
  3. etc ディレクトリ内のファイルを一覧表示して、wsl.conf ファイルが既に存在するかどうかを確認します (ls コマンドを使用するか、explorer.exe .を使用して Windows エクスプローラーでディレクトリを表示します)。
  4. wsl.confファイルがまだ存在しない場合は、sudo touch wsl.confまたはsudo nano /etc/wsl.confを実行して作成できます。このファイルは Nano エディターから保存するときに作成されます。
  5. wsl.conf ファイルに追加するには、次のオプションを使用できます。

既定の設定: ディレクトリごとに大文字と小文字の区別を有効にする dir

[automount]
options = case = dir

ケース感度は使用できません(マウントされた NTFS ドライブ上のすべてのディレクトリは大文字と小文字を区別しません)。off

[automount]
options = case = off

(NTFS) ドライブ上のすべてのディレクトリを大文字と小文字を区別して扱います。 force

[automount]
options = case = force

このオプションは、WSL 1 として実行されている Linux ディストリビューションにドライブをマウントする場合にのみサポートされており、登録キーが必要な場合があります。 登録キーを追加するには、管理者特権 (管理者) コマンド プロンプト ( reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1) からこのコマンドを使用できます。

これらの変更を有効にするには、 wsl.conf ファイルに変更を加えてから WSL を再起動する必要があります。 WSL は、次のコマンドを使用して再起動できます。 wsl --shutdown

ヒント

すべてのドライブのために、特定の大文字と小文字を区別する設定でディスクを利用可能にするには、DrvFsファイルシステムプラグインを使用してドライブを/mnt(例:/mnt/c、/mnt/d など)にマウントし、上記の/etc/wsl.confを使用します。 1 つの特定のドライブの既定のマウント オプションを設定するには、 /etc/fstab ファイル を使用してこれらのオプションを指定します。 WSL 構成オプションの詳細については、「 wslconf を使用したディストリビューションごとの起動設定の構成」を参照してください。

WSL ディストリビューションにマウントされたドライブの大文字と小文字の区別の変更

WSL ディストリビューションにマウントされた NTFS 形式のドライブは、既定では大文字と小文字が区別されません。 WSL ディストリビューションにマウントされたドライブ上のディレクトリの大文字と小文字の区別を変更するには (例:Ubuntu)、Windows ファイル システムの上記と同じ手順に従います。 (EXT4 ドライブでは、既定では大文字と小文字が区別されます)。

ディレクトリ (FOO ≠ foo) で大文字と小文字の区別を有効にするには、次のコマンドを使用します。

fsutil.exe file setCaseSensitiveInfo <path> enable

ディレクトリで大文字と小文字の区別を無効にし、大文字と小文字を区別しない既定値 (FOO = foo) に戻すには、次のコマンドを使用します。

fsutil.exe file setCaseSensitiveInfo <path> disable

WSL の実行中にマウントされたドライブの既存のディレクトリで大文字と小文字を区別するフラグを変更する場合は、WSL にそのディレクトリへの参照がないことを確認してください。そうしないと、変更は有効になりません。 つまり、現在の作業ディレクトリとしてディレクトリ (またはその子孫) を使用するなど、WSL プロセスでディレクトリを開く必要はありません。

Git で大文字と小文字の区別を設定する

Git バージョン管理システムには、使用しているファイルの大文字と小文字の区別を調整するために使用できる構成設定もあります。 Git を使用している場合は、 git config core.ignorecase 設定を調整できます。

Git で大文字と小文字が区別されるように設定するには (FOO.txt ≠ foo.txt)、次のように入力します。

git config core.ignorecase false

Git で大文字と小文字を区別しないように設定するには (FOO.txt = foo.txt)、次のように入力します。

git config core.ignorecase true

大文字と小文字を区別しないファイル システムでこのオプションを false に設定すると、エラー、誤った競合、または重複するファイルが混乱する可能性があります。

詳細については、 Git Config のドキュメントを参照してください

トラブルシューティング

ディレクトリに大文字と小文字が混在し、大文字と小文字の区別が必要なファイルがありますが、Windows FS ツールはこれらのファイルを認識しません

Windows ファイル システム ツールを使用して、大文字と小文字が混在するファイルが含まれる Linux ディレクトリで作業するには、まったく新しいディレクトリを作成し、大文字と小文字を区別するように設定してから、ファイルをそのディレクトリにコピーする必要があります (git clone または untar を使用)。 ファイルは大文字と小文字が混ざった状態のままです。 (ファイルを大文字と小文字を区別しないディレクトリに既に移動しようとして競合が発生した場合は、上書きされ、使用できなくなるファイルがいくつか存在する可能性があることに注意してください)。

エラー: ディレクトリが空ではありません

他のファイルまたはディレクトリを含むディレクトリでは、大文字と小文字を区別する設定を変更できません。 新しいディレクトリを作成し、次に設定を変更し、大文字と小文字が混在するファイルをその中にコピーしてみてください。

エラー: アクセスが拒否されました

大文字と小文字の区別を変更するために必要なディレクトリに対する "属性の書き込み"、"ファイルの作成"、"フォルダーの作成"、および "サブフォルダーとファイルの削除" アクセス許可があることを確認します。 これらの設定を確認するには、Windows エクスプローラーでディレクトリを開きます (コマンド ラインから、次のコマンドを使用します: explorer.exe .)。 ディレクトリを右クリックし、[ プロパティ ] を選択して [ドキュメントのプロパティ] ウィンドウを開き、[ 編集] を選択してディレクトリのアクセス許可を表示または変更します。

NTFS ディレクトリのアクセス許可を表示または変更するためのプロパティ ウィンドウ

エラー: この操作にはローカル NTFS ボリュームが必要です

大文字と小文字の区別属性は、NTFS 形式のファイル システム内のディレクトリでのみ設定できます。 WSL (Linux) ファイルシステムのディレクトリは既定で大文字小文字が区別されます (fsutil.exe ツールを使用して大文字小文字を区別せずに設定することはできません)。

その他のリソース