\r\n\r\n
windows 10では、Linuxや他のUNIX系OSと同様に、大文字と小文字を区別するファイルシステムをオプションで提供します。この機能を有効にすると、すべてのWindowsプロセスで大文字小文字を区別するファイルやフォルダーが正しく処理されます。つまり、「ファイル」と「ファイル」を別々のファイルとして扱っているのです。
これは、NTFSファイルシステムの機能で、ディレクトリ単位で有効にすることができます。ファイルシステム全体には適用されないので、開発用に使用する特定のフォルダーにのみ大文字小文字を区別する機能を有効にすることができます。
Windows 10は、2018年4月のアップデートで大文字小文字を区別する機能を追加しました。以前は、Bash-on-Windows環境(Windows-Subsystem-for-Linuxとも呼ばれる)において、Windowsフォルダを大文字小文字を区別して読み込むことが可能でした。これは、Linux環境では問題なく動作しましたが、通常のWindowsアプリケーションを混乱させました。これは、ファイルシステムレベルの機能であり、すべてのWindowsアプリケーションは、そのフォルダー内の大文字と小文字を区別するファイルシステムも表示するようになりました。
この機能は、fsutil.exeファイル経由でコマンドラインから実行する必要があります。コマンドプロンプトまたはPowerShellのウィンドウから行うことができます。デフォルトの設定では、Linux環境で作成されたフォルダーも自動的に大文字と小文字が区別されるように設定されます。
関連:Windows 10の新機能「BashShell」の全機能をご紹介します。
はじめに、スタートボタンを右クリックして、PowerShell(管理者)コマンドを選択します。コマンドプロンプトを使用したい場合は、スタートメニューから「コマンドプロンプト」を検索し、右クリックで「管理者として実行」コマンドを選択します。このコマンドは、どのコマンドライン環境を選択しても、同じように動作します。
権限によっては、このコマンドを実行するために実際に管理者権限が必要ない場合があります。技術的には、変更したいディレクトリの「書き込み属性」パーミッションが必要です。多くの場合、ユーザーフォルダー外のフォルダー(例:c:㈳project)を編集する場合はAdministrator権限が必要で、ユーザーフォルダー内のフォルダー(例:c:㈳project)を変更する場合はAdministrator権限は必要ありません。
続行する前に、変更したいディレクトリを参照するLinuxソフトウェアが現在実行されていないことを確認してください。Linuxソフトウェアがフォルダにアクセスしている間は、フォルダの大文字小文字を区別するフラグを変更しないようにします。現在実行中のLinuxプロセスがディレクトリまたはその内容を開いている場合、たとえそれが現在の作業ディレクトリであっても、Linuxアプリケーションはその変更を認識できず、問題が発生する可能性があります。
大文字と小文字を区別するには、次のコマンドを入力し、「C:³³」をフォルダのパスに置き換えてください。
fsutil.exe file setCaseSensitiveInfo C:\folder enableフォルダーパスにスペースがある場合は、以下のようにパス全体を逆カンマで囲んでください。
fsutil.exe file setCaseSensitiveInfo "C:\my folder" enable大文字小文字を区別するフラグは、それが適用された特定のフォルダーにのみ影響し、そのフォルダーのサブフォルダーには自動的に継承されません。
つまり、C: \folder というフォルダがあり、その中に C:\folder のサブフォルダ C:\test と C:\folder のサブフォルダ C:\stuff がある場合、 C:\folder フォルダだけ大文字と小文字を区別しても、 "test" と "stuff "は区別されません。test "と "stuff "サブフォルダーは、大文字と小文字を区別しません。3つのフォルダーの大文字と小文字を区別するために、適切なfsutilコマンドを別々に実行する必要があります。
Windows Subsystem for Linux(Bashシェル)で動作するLinuxツールで、大文字小文字を区別するフラグを設定したフォルダーを作成できるようになりました。そのため、Bashシェルでmkdirコマンドを使ってディレクトリを作成しても、開発ツールでディレクトリを作成しても、作成されたディレクトリは、インストールされているWindowsのファイルシステム上に作成しても、自動的に大文字小文字を区別するように設定されます。
技術的には,Linux環境のDrvFsファイルシステムがデフォルトでcase=dirフラグを使用するためです. case=dirオプションは,Linux環境がディレクトリごとにNTFSフラグを尊重し,Linux環境から作成されるディレクトリには自動的に大文字小文字を区別したフラグを設定します.このオプションは、必要に応じて、wsl.confファイルのアーカイブで変更することができます。
Linux環境からフォルダを作成する限り、適切な大文字小文字の区別の設定で作成されるので、fsutil.exeのファイルコマンドを触る必要はありません。
現在、大文字と小文字が区別されているかどうかを確認するには、次のコマンドを実行します。"C:㈳フォルダー "をフォルダーへのパスに置き換えてください。
fsutil.exe file queryCaseSensitiveInfo C:\folderディレクトリの大文字と小文字の区別が有効になっている場合は、「Case sensitive attribute on directory [path] is enabled」と表示されます。ディレクトリがWindows標準の大文字小文字を区別しない機能を使用している場合、"The case-sensitive attribute on directory [path] is disabled" と表示されます。
変更を元に戻して、大文字と小文字を区別しないディレクトリに戻すには(ビル・ゲイツが望んだように)、次のコマンドを実行します。「C:」は、フォルダのパスに置き換えてください。
fsutil.exe file setCaseSensitiveInfo C:\folder disable競合する可能性のある名前のファイルを含むフォルダーに対して大文字小文字を区別しないようにしようとすると、「Error: directory is not empty」というメッセージが表示されます。作業を進める前に、競合するファイルを削除するか、ファイル名を変更する必要があります。