Windows Subsystem for Linuxでbash
を起動すると、ディレクトリに移動します。
/mnt/c/Users/<username>
このディレクトリをls
にすると、Windowsのファイルエクスプローラを使って、Desktop
やDocuments
などのディレクトリがC:\Users\<username>
にあることがわかります。ここがbash
プログラムの始まりなので、これが私のホームディレクトリだと思っていましたが、cd
かcd ~
のどちらかをタイプすると次のようになります。
/home/<username>
これには私の.bashrc
、.profile
などのファイルが含まれていますが、これらは私のホームディレクトリのLinuxボックスにあります。さらに、ここからcd ../..
を入力すると、bin
やetc
などのディレクトリを見ることができます。これは、Linuxボックスでも期待通りにできます。
これらすべてに関して、2つ質問があります。
/mnt/c/Users/<username>
はC:\Users\<username>
と比べて正確に何ですか?それらは同じもののようです---それで/mnt/c/
は何ですか?/home/<username>
内のファイルを表示する方法を教えてください。私が本当にやりたがっているわけではありません。WindowsがどのようにしてこのLinux用サブシステムを編成しているのかを理解しようとしているだけです。2の場合:現在のパスは、1つのグローバルパスではなく、Microsoftストアからインストールしたディストリビューションに関連付けられています。そのため、Ubuntuの場合は、次の場所にあります。
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
私は他のディストリビューションはそれぞれのフォルダの下の同じ場所にあると思います。
%LOCALAPPDATA%\Packages\
/mnt/c
はC:\
とまったく同じです。これはWSLから取得するための単なる構文です。C:\Users\<username>\AppData\Local\Lxss\rootfs
を見てください。/mnt/c
にマウントされたファイルシステムについて
- / mnt/c/Users /とC:\ Users \との正確な比較それらは同じもののようです----/mnt/c /とは何ですか?
Windowsとは対照的に、Linux(およびUnixベースのその他のシステム)は、所有するディスクの数に関係なく単一のフォルダー構造を使用します。複数のディスクがある場合、これらのすべてのディスクはある時点でフォルダー構造にマウントする必要があります。
/mnt
または/media
という名前のフォルダーにマウントされますWSLには、Windowsで使用されるディスクへのアクセスを可能にするDrvFSという名前の特別なタイプのファイルシステムがあります。 DrvFSを使用して、Windowsファイルシステムだけでなく、ネットワークディスクやその他のメディアタイプもマウントできます。
C:
ディスクは/mnt/c
の下にマウントされますD:
ディスクがある場合、/mnt/d
の下にマウントされます/mnt/c
に表示されるファイルは、C:
にあるファイルと同じです。ファイルを変更すると、ウィンドウでも変更が適用されます。
mount
コマンドを使用して他の種類のメディアにアクセスする (リムーバブルドライブやネットワーク共有など)。
/home/<username>
の場所について
- Windowsファイルエクスプローラーを使用して/ home /内のファイルを表示するにはどうすればよいですか?私が本当に望んでいるわけではありませんが、私はWindowsがこのSubsystem for Linuxをどのように整理しているのかを把握しようとしています。
WSLでは、すべてのLinuxファイルシステムはWindowsフォルダーの下にあります。フォルダーの場所は、Windowsのバージョンと使用しているWSLディストリビューションによって異なります。
%LOCALAPPDATA%\Lxss\rootfs
に保存します%LOCALAPPDATA%\Packages\...\LocalState\rootfs
などのフォルダーを使用します。パッケージの名前は、ディストリビューションによって異なります(たとえば、Ubuntuの場合とDebianの場合では異なります)WSLフォルダーの場所を知るための多くのオプション を確認できます。たとえば、最も簡単なオプションは、インストールフォルダーを知るために lxRunOffline を使用することだと思います。
## You can use lxrunoffline to check which WSL distributions have installed
## using: lxrunoffline list
C:\> lxrunoffline list
backup
Ubuntu-18.04
## And you can use it to get the location of any of these WSL installations
## using: lxrunoffline get-dir -n <name of distribution>
C:\> lxrunoffline get-dir -n backup
c:\wsl\installed\backup
C:\> lxrunoffline get-dir -n Ubuntu
C:\Users\Jaime\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
インストールフォルダーの場所がわかれば、/home/<username>
は<installation folder>\rootfs\home\username
の下にあります。
c:\wsl\ubuntu
の場合/home/<username>
はc:\wsl\ubuntu\rootfs\home\username
にあります注:LinuxとWindowsの両方は、ファイル許可を異なる方法で保存します。現在、WSL DrvFSは、Windowsで表示できるファイルに添付されたストリーム(メタデータ)としてLinuxの許可を保存します。 Microsoftは、Windowsプログラムを使用してLinuxファイルを変更することを推奨していません。いくつかのWindowsアプリケーション Linuxのパーミッションを損なう が予告なしに発生する可能性があります。
私はそれがあなたがどのウィンドウビルドに依存しているかによると思うかもしれませんが、私にとってはWindows 10 Pro 64ビット、バージョン1709(OSビルド16299.522)そしてバージョン1803(OSビルド17134.165)で場所はまだ:
C:\Users\<username>\AppData\Local\lxss
トリックはC:\Users\<username>\AppData\Local
にいるときあなたはlxss
フォルダを見ないでしょう(あなたがあなたのフォルダオプションで「保護されたオペレーティングシステムファイルを隠す(推奨)」のチェックを外していない限り)。
ただし、Windowsエクスプローラのアドレスバーに\lxss
を追加するだけで、フォルダに移動します。
(%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
やMichael Bondsの回答で言及されているものに似たものを持っていないないことに注意してください)
更新
私がインストールしたものであるレガシーWSLがあることがわかりました。今WSLはマイクロソフトストアアプリを介して提供されます。 Ubuntu 18.04 LTS用のバージョンと、Linuxには他にもいくつかの種類のもの(Debianなど)があります。最新の状態にしたい場合は、 従来のWSLをアンインストールし 、 Microsoftストア版をインストールすることをお勧めします。 .
ホームフォルダの場所は、インストールしたWSLの種類によって異なります。
Debian/Ubuntu/OpenSUSE $ HOMEをWindowsのスタートメニューに固定するためのwindows 10 proのための4つのステップ:
これで、ホームディレクトリがスタートメニューに固定されました。私はショートカットを作成しようとしましたが、それはどこにもわかりにくいわけではありません。
Bashでは、Windowsのファイルエクスプローラで現在のディレクトリを表示するには、次のように入力します。
Explorer .
「。」を省略しないでください。これは現在のフォルダでwindowsエクスプローラを開くでしょう、そしてあなたはすべてがあなたのwindowsシステムの他の部分に関連しているところを見ることができます。
私はちょうどUbuntu 16.04を使って/etc/environment
を探し、Windows 10のNTFSストレージを探す必要がありました。私はそれをここで見つけました:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
/mnt/c/
をC:\
に変更しました。/
を\
に変更しました。USER_NAME
をWindowsのユーザー名に置き換える必要があります。Sudo -H Nautilus
を使用する必要がありました。Linux(Ubuntu 16.04)側からの命名は次のようになります。
$ Sudo cat /mnt/c/Users/USER_NAME/AppData/Local/Packages/CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc/LocalState/rootfs/etc/environment
PATH="/mnt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export LIBGL_ALWAYS_INDIRECT=Yes
export DISPLAY=localhost:0.0