Bash-on-Ubuntu-on-Windowsは、大文字と小文字を区別するファイルパスをサポートします。これは、大文字と小文字が異なるだけの名前で2つのファイルまたはディレクトリを作成できることを意味します。ただし、これらのファイルへのアクセスに問題があります。
ランニング
bash -c "touch Magic ; mkdir magic ; echo Secret! > magic/secret"
ファイル名Magic
、magic
という名前のディレクトリ、およびそのディレクトリにファイル名secret
を作成します。
bash -c "ls -lR"
は
.:
total 0
drwxrwxrwx 2 root root 0 Aug 23 10:37 magic
-rwxrwxrwx 1 root root 0 Aug 23 10:37 Magic
./magic:
total 0
-rwxrwxrwx 1 root root 8 Aug 23 10:37 secret
(デフォルトのユーザーではないため、なぜroot
を取得するのかわかりませんが、それは私の質問には関係がないようです。)
現在、bash
はディレクトリ内のmagic/secret
ファイルに簡単にアクセスできますが、Windowsはディレクトリとファイルの両方を同じものとして扱っているようです。そのため、ディレクトリをダブルクリックすると、「ディレクトリ名が無効です」というエラーが表示されます
The directory name is invalid.
が出力されるので、cd
の使用についても同じことが言えます。
(Bashを使用する以外に)magic/secret
ファイルにアクセスする方法はありますか?
レジストリを変更して、プログラムでそれを行う方法を見つけました。説明 ここ 。しかし、既存のWindowsツールでそれを行う方法はないようです。
Win32サブシステムが大文字と小文字の区別をサポートしておらず、エクスプローラーがPOSIXサブシステムをサポートしていないという理由だけで、エクスプローラーでこれらのフォルダーにアクセスすることはできません。
ビルド14361
ビルド14361に関する一般的なWindows情報については、Windowsブログにアクセスしてください。
問題を追跡または報告するには、Githubページにアクセスしてください。
修繕
Windows上のUbuntuのBashで実行する場合、DrvFsで大文字と小文字が区別されるようになりました。
- ユーザーは/ mnt/cドライブでcase.txtとCASE.TXTを使用できます
- 大文字と小文字の区別は、Windows上のUbuntuのBash内でのみサポートされます。 Bashの外部では、NTFSはファイルを正しく報告しますが、Windowsからのファイルとの対話で予期しない動作が発生する可能性があります。
- 各ボリュームのルート(つまり/ mnt/c)は大文字と小文字を区別しません
- Windowsでのこれらのファイルの処理の詳細については、 ここ を参照してください。
https://msdn.Microsoft.com/en-us/commandline/wsl/release_notes#build-14361