web-dev-qa-db-ja.com

Linux用Windowsサブシステムのホームディレクトリは何ですか?

Windows Subsystem for Linuxでbashを起動すると、ディレクトリに移動します。

/mnt/c/Users/<username>

このディレクトリをlsにすると、Windowsのファイルエクスプローラを使って、DesktopDocumentsなどのディレクトリがC:\Users\<username>にあることがわかります。ここがbashプログラムの始まりなので、これが私のホームディレクトリだと思っていましたが、cdcd ~のどちらかをタイプすると次のようになります。

/home/<username>

これには私の.bashrc.profileなどのファイルが含まれていますが、これらは私のホームディレクトリのLinuxボックスにあります。さらに、ここからcd ../..を入力すると、binetcなどのディレクトリを見ることができます。これは、Linuxボックスでも期待通りにできます。

これらすべてに関して、2つ質問があります。

  1. /mnt/c/Users/<username>C:\Users\<username>と比べて正確に何ですか?それらは同じもののようです---それで/mnt/c/は何ですか?
  2. Windowsのファイルエクスプローラを使用して/home/<username>内のファイルを表示する方法を教えてください。私が本当にやりたがっているわけではありません。WindowsがどのようにしてこのLinux用サブシステムを編成しているのかを理解しようとしているだけです。
55
bcf

2の場合:現在のパスは、1つのグローバルパスではなく、Microsoftストアからインストールしたディストリビューションに関連付けられています。そのため、Ubuntuの場合は、次の場所にあります。

%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

私は他のディストリビューションはそれぞれのフォルダの下の同じ場所にあると思います。

%LOCALAPPDATA%\Packages\
64
Michael Bond
  1. /mnt/cC:\とまったく同じです。これはWSLから取得するための単なる構文です。
  2. C:\Users\<username>\AppData\Local\Lxss\rootfsを見てください。
22
Joseph Sible

/mnt/cにマウントされたファイルシステムについて

  1. / mnt/c/Users /とC:\ Users \との正確な比較それらは同じもののようです----/mnt/c /とは何ですか?

Windowsとは対照的に、Linux(およびUnixベースのその他のシステム)は、所有するディスクの数に関係なく単一のフォルダー構造を使用します。複数のディスクがある場合、これらのすべてのディスクはある時点でフォルダー構造にマウントする必要があります。

  • 通常、すべてのディスク(システムのブートに使用されるものとは異なる)は、/mntまたは/mediaという名前のフォルダーにマウントされます

WSLには、Windowsで使用されるディスクへのアクセスを可能にするDrvFSという名前の特別なタイプのファイルシステムがあります。 DrvFSを使用して、Windowsファイルシステムだけでなく、ネットワークディスクやその他のメディアタイプもマウントできます。

  • WSLでは、デフォルトで、WindowsのC:ディスクは/mnt/cの下にマウントされます
  • 別のディスク、たとえばWindowsのD:ディスクがある場合、/mnt/dの下にマウントされます

/mnt/cに表示されるファイルは、C:にあるファイルと同じです。ファイルを変更すると、ウィンドウでも変更が適用されます。

mountコマンドを使用して他の種類のメディアにアクセスする (リムーバブルドライブやネットワーク共有など)。


/home/<username>の場所について

  1. Windowsファイルエクスプローラーを使用して/ home /内のファイルを表示するにはどうすればよいですか?私が本当に望んでいるわけではありませんが、私はWindowsがこのSubsystem for Linuxをどのように整理しているのかを把握しようとしています。

WSLでは、すべてのLinuxファイルシステムはWindowsフォルダーの下にあります。フォルダーの場所は、Windowsのバージョンと使用しているWSLディストリビューションによって異なります。

  • WSLの初期バージョンは、Linuxファイルシステムを%LOCALAPPDATA%\Lxss\rootfsに保存します
  • WindowsストアからインストールされたWSLディストリビューション、Windowsビルド16215(2017年中旬)以降、%LOCALAPPDATA%\Packages\...\LocalState\rootfsなどのフォルダーを使用します。パッケージの名前は、ディストリビューションによって異なります(たとえば、Ubuntuの場合とDebianの場合では異なります)
  • lxRunOfflineWSL-DistroLauncher など、他のツールを使用してインストールされたLinuxディストリビューション任意の場所にファイルシステム。

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のパーミッションを損なう が予告なしに発生する可能性があります。

15
Jaime

私はそれがあなたがどのウィンドウビルドに依存しているかによると思うかもしれませんが、私にとっては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の種類によって異なります。

5
User
  1. WSL bashコンソールを使用して、ホームディレクトリに "test_here.txt"などの任意の特定の名前のファイルを作成します。
  2. 次に、Windowsエクスプローラを使用して検索ボックスを使用し、ファイルtest_here.txtを検索します。
  3. 見つかったファイル上で、右クリック>ファイルの場所を開く。
4
Ellis

Debian/Ubuntu/OpenSUSE $ HOMEをWindowsのスタートメニューに固定するためのwindows 10 proのための4つのステップ:

  1. スタートメニューからファイルエクスプローラを起動
  2. アドレスバー(検索バーではない)に、%LOCALAPPDATA%と入力します。
  3. 検索バーであなたの$ HOMEディレクトリ名を探してください、私の場合それはekennyでした。これの約3つのバージョンがあるでしょうが、あなたは本当に長い道のりのものを望みます。
  4. あなたのホームディレクトリを右クリックして、 "Pin to Start"をクリックしてください。

これで、ホームディレクトリがスタートメニューに固定されました。私はショートカットを作成しようとしましたが、それはどこにもわかりにくいわけではありません。

1
Eamonn Kenny

Bashでは、Windowsのファイルエクスプローラで現在のディレクトリを表示するには、次のように入力します。

Explorer .

「。」を省略しないでください。これは現在のフォルダでwindowsエクスプローラを開くでしょう、そしてあなたはすべてがあなたのwindowsシステムの他の部分に関連しているところを見ることができます。

0
Gary Barrett

私はちょうどUbuntu 16.04を使って/etc/environmentを探し、Windows 10のNTFSストレージを探す必要がありました。私はそれをここで見つけました:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • 私はWindowsの命名法のために/mnt/c/C:\に変更しました。
  • 同じ理由で、すべての/\に変更しました。
  • USER_NAMEをWindowsのユーザー名に置き換える必要があります。
  • WSLに保存されているユーザーファイルを表示する権限を取得するには、Sudo -H Nautilusを使用する必要がありました。
  • NEVERWindowsアプリケーションを使用してWSLでLinuxファイルを更新します。 それはあなたのLinuxデータを破壊します

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
0