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

bash windows-10 windows-subsystem-for-linux

Windows Subsystem for Linuxでbashを起動すると、ディレクトリに落ちてしまいます

/mnt/c/Users/<username>

このディレクトリをlsと入力すると、Windowsのファイルエクスプローラを使ってDesktopDocumentsなどのディレクトリがC:\Users\<username>にあるのが見えます。ここがbashプログラムが起動した場所なので、ここが自分のホームディレクトリだと思っていたのですが、cdcd ~のどちらかを入力すると、ここに出てきます

/home/<username>

これには私の .bashrc, .profile などのファイルが含まれており、Linux ボックスのホームディレクトリにあると予想されます。さらに、ここから cd ../.. を入力すると、bin, etc などのディレクトリが表示されます

この件に関して、2つ質問があります

  1. /mnt/c/Users/<username>C:\Users\<username>を比較すると、/mnt/c/Users/<username>C:\Users\<username>は一体何なのでしょうか?同じもののようですが、/mnt/c/とは何でしょうか?
  2. Windowsファイルエクスプローラを使って/home/<username>のファイルを表示するにはどうすればいいですか?Windows がどのように Linux 用のサブシステムを構成しているかを理解しようとしているだけです

  197  bcf  2017-03-04


ベストアンサー

2について:現在のパスは、グローバルパスではなく、Microsoft Storeからインストールしたディストリビューションに関連するようになりました

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

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

%LOCALAPPDATA%\Packages\

これは2018年時点で有効だった古い回答ですが、最新版[2020]ではファイルシステムからのアクセスとなります

# \\wsl$\<Distribution>:

\\wsl$\Ubuntu

212  Michael Bond  2017-12-29


Bashでは、Windowsのファイルエクスプローラでカレントディレクトリを表示するには、Enterを押すだけです

explorer.exe .

“… “を省略しないでください

これにより、現在のフォルダでWindowsエクスプローラが開き、Windowsシステムの残りの部分との関係ですべてのものがどこにあるかを確認することができます

70  Gary Barrett  2019-02-20


  1. /mnt/cC:\と全く同じです。これはWSLからそれを得るための構文です
  2. C:\Users\<username>\AppData\Local\Lxss\rootfsを見てください

44  Joseph Sible-Reinstate Monica  2017-03-04


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

  1. C:\Users<ユーザ名>と比較して、/mnt/c/Users/は何なのでしょうか?同じもののようですが、/mnt/c/とは何でしょうか?

Windows とは対照的に、Linux (および Unix ベースの他のシステム) は、ディスクの数に依存しない単一のフォルダ構造を使用します。複数のディスクを持っている場合、これらすべてのディスクはどこかの時点でフォルダ構造にマウントされなければなりません

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

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

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

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

コマンドを使用して、他のタイプのメディア (リムーバブルドライブやネットワーク共有など) にアクセスすることができます


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

  1. Windows ファイルエクスプローラを使用して /home/ のファイルを表示するにはどうすればいいですか?Windows がどのように Linux 用のサブシステムを構成しているかを理解しようとしているだけです

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

  • WSLの初期バージョンでは、linuxのファイルシステムは%LOCALAPPDATA%\Lxss\rootfsに格納されている
  • Windows ストアからインストールされた WSL ディストリビューションは、Windows Build 16215 (2017年半ば) からインストールされ、%LOCALAPPDATA%\Packages\{package}\LocalState\rootfs のようなフォルダを使用します。パッケージ名はディストリビューションによって異なります(例:DebianとUbuntuでは異なる)。WindowsのUbuntuの場合はCanonicalGroupLimited.UbuntuonWindows_{code}などです
  • lxRunOfflineWSL-DistroLauncher などの他のツールを使ってインストールされた Linux ディストリビューションは、linux ファイルシステムを任意の場所に保存することができます

WSLのフォルダの場所を知るには、many optionsをチェックしてみてください。例えば、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のパーミッションを保存しています。マイクロソフトは、Windowsのプログラムを使ってlinuxのファイルを変更することを推奨していません。それは、いくつかのWindowsのアプリケーションそれに気づかずにlinuxのパーミッションを損傷する可能性があります

32  Jaime  2018-08-09


現在のWindows 10 Insider(Fast ring: Windows 10 build 19025.1)では、ディストロをネットワークドライブとしてマウントすることができます

WSLはwsl$でアクセスでき、パスはあなたのディストリビューション名(wsl -l -q)です

例えば net use Z: \\wsl$\Debian /PERSISTENT:YES の場合

9  foal  2019-11-16


それはあなたが上にあるどのWindowsのビルドに依存し、2018年に私のためにWindows 10 Pro 64ビット、バージョン1709(OSビルド16299.522)とまた、バージョン1803(OSビルド17134.165)の場所はまだです

C:\Users\<username>\AppData\Local\lxss

コツは、C:\Users\<username>\AppData\Localにいるときはlxssフォルダが表示されないことです(フォルダオプションで「保護されたオペレーティングシステムファイルを隠す(推奨)」のチェックを外している場合を除きます)

しかし、ウィンドウズエクスプローラーのアドレスバーに\lxssを追加するだけで、フォルダに移動します

(マイケル・ボンズの回答で言及されていた%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscなどは持っていなかったことに注意)

Update

私がインストールしていたレガシーWSLがあることが判明しました。現在、WSLはMicrosoftストアアプリを介して提供されています。Ubuntu 18.04 LTS用のバージョンがあり、また、今ではいくつかの他のフレーバーのLinux(例えば、Debian)のバージョンもあります。最新の状態にしたい場合は、レガシーの WSL をアンインストールしMicrosoft ストア版をインストールする必要があります

ホームフォルダがどこにあるかは、インストールしたWSLの種類によって異なります。マイクロソフトストア版では、他の回答で述べたように、ホームフォルダは次の場所にあります

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

8  User  2018-07-16


  1. ホームディレクトリにある WSL bash コンソールを使用して、”test_here.txt “のような任意の特定の名前のファイルを作成します
  2. そして、Windowsエクスプローラを使って、検索ボックスを使って、test_here.txtというファイルを検索します
  3. 見つかったファイルの上で > 右クリック > ファイルの場所を開きます

4  Ellis  2018-01-15


windows 10 proの4つの手順で、Debian/Ubuntu/OpenSUSEの$HOMEをWindowsのスタートメニューに固定します

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

これでホームディレクトリがスタートメニューに固定されました。ショートカットを作ってみましたが、どこにも分かりません

2  Eamonn Kenny  2019-01-11


私のセットアップ(https://developer.microsoft.com/en-us/windows/downloads/virtual-machinesからダウンロードした “Windows 10 開発環境 “の下にある WSL Ubuntu)では、AppData フォルダはデフォルトで非表示になっていました。だからしなければならなかった

  • ウィンドウズエクスプローラーを開きます
  • C:\Users\User\に行く
  • メニーでviewを選択します
  • チェックhidden items
  • と表示されると、AppDataフォルダがC:\Users\Userの下に表示されます
  • と私は C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs\home\userの下に私の/home/userを発見しました(ここで*はおそらくいくつかの種類のコードに応じてローカルコードまたはバージョンです)

なぜそんな風に隠されているのかわからない

2  Kjetil S.  2019-12-19


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

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を使用して権限を取得しなければならなかった
  • Windows アプリケーションを使用して 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  WinEunuuchs2Unix  2019-04-15


Chocolatey でディストリビューションをインストールした場合、ホームディレクトリへのパスは次のようになります

C:\ProgramData\chocolatey\lib\wsl-<distribution-name>\tools\unzipped\rootfs\home

たとえば、Ubuntu 18.04の場合

C:\ProgramData\chocolatey\lib\wsl-ubuntu-1804\tools\unzipped\rootfs\home

0  Marco Lackovic  2019-12-10


タイトルとURLをコピーしました