たとえば、Windows内からファイルを作成したときに、Windows 10のLinuxサブシステム(bash.exe)でそのファイルが表示されないのはなぜですか。
スクリーンショットに説明があるはずです。
フォルダ:OMGはWindowsエクスプローラ内から作成されました。フォルダOMGBashはLinuxサブシステムbash.exeで作成されました
Folder ORファイルがbash.exeの外部で作成されると、権限や所有権に関係なく、見ることはできません。
ファイルの権限を表示するためにCygwinを使用しなければならなかった情報を表示するために、フォルダが表示されるかどうかを確認するために権限も変更しました。 (下部にある2つのコマンドウィンドウ)
フォルダ、bash.exe、Cygwinのアクセス許可を示すスクリーンショット:
すべてのCygwinスクリプトをLinuxサブシステムに移動しようとしていますが、すべてのファイルを作成し直してからbashを使用してコピーして貼り付け、再フォーマットしてから使用する必要はありません。 Dos2unix(非常に長い間)。
Linuxサブシステム用のGitHubでこれを見つけました:
他のチケットに関する議論によると、WindowsからLinuxサブシステムに直接コピーすることはサポートされていない。 AppDataの下のどこかにWSLファイルシステム用のファイルが含まれているように見えるディレクトリがあります(私はその場所を忘れます)。しかし、そこに新しいファイルを追加したり、既存のファイルを変更したりすると、変更内容がWSL内に正しく反映されません。
私の考えでは、LinuxはWindowsとは異なるファイルについて異なるメタデータ(およびディスクバッファリングモデルも異なるため、より多くのキャッシング情報など)を格納する必要があり、現在これは構造のマスターコピーを格納することによって実装されます。 Linuxファイルシステムをある種のデータベースに保存し、Windowsファイルシステムをそのデータベースの便利なBLOBストアとして使用します。
本当にこれをする必要があるなら、回避策はbash.exe -c "mv%1/home/$ USER /"を行うドラッグ&ドロップの.batスクリプトかsomesuchを書くことでしょう。 (おそらく、%1を有効なWSLパスに変換するために、sedとtrを使って賢い作業をしなければならないでしょう。)
あるいは、ファイルをWindowsディレクトリに置き、WSL内で "cd〜; ln -s/mnt/c/path/to/my/files"を実行してWSLホームディレクトリにあるように見せることができますか。
私があなたの質問を誤解しているかどうかはわかりませんが、あなたのubuntu bash(右上のウィンドウ)は/mnt
の下であなたのWindowsベースのディスクにアクセスできるはずです。たとえば、私のマシンでは/mnt/c/Users/Scott/Desktop
が私のWindowsデスクトップで、viからそこにファイルを読み書きすることができます。私はその逆がまだ正しいとは思わない。つまり、私はあなたがWindowsエクスプローラからあなたのbashの世界を探検できるとは思わない。
私が開発者としてやってきたことは、自分のd:でプロジェクトをホストし、そのLinuxベースのツールをその/mnt/d/projects/someproject/
フォルダーに向けることです。
特にsym-linkやLinux/Windows間のFSの境界を越えたビルドでは、Windowsビルドを定期的に更新するようにしてください。
@ scottt732が美しく答えた。
Windowsで作業をしていて、Linux Subsystemでそれらのファイルにすばやくアクセスしたい開発者のためのヒントにすぎません。 シンボリックリンクを使うことができます。
例えばd:/projects/web-project
でプロジェクトに取り組んでいる場合、/var/www/web-project
の場所にシンボリックリンクを作成することができ、あなたがウィンドウで変更したすべてのファイルはLinux Bashですぐにアクセスできるようになります。
このためには、このようにln
コマンドを使用します。
ln -s /mnt/d/projects/web-project /var/www/web-project
上の行で/mnt/d
はウィンドウズ上のあなたのドライブです。あなたのApache仮想ホストをこのパスに設定すれば準備完了です。
Windowsアプリケーションを使ってLinuxファイルをコピー/作成/更新しないことをお勧めします 。
代わりに、Windowsツールを使用してファイルを編集したり、Linuxツール/ランタイム/プラットフォームを使用して(たとえばc:\dev\project
を使用して)ビルド/テスト/実行するファイルをWindowsファイルシステム(/mnt/c/dev/project
など)に保存します。
あなたの特定のシナリオで、あなたがあなたのCygwinファイルをBashにコピーしたいのであれば、Bashを開いて、以下のようにC:のあなたのCygwinフォルダから~/
にファイルをコピーしてください:cp /mnt/c/Users/dave/Documents/Cygwin/* ~/
)
HTH.
/ testindを実行するにはLinux環境が必要でしたが、私はWindows 10でPyCharm/Eclipseを使用する必要がありました。
私はgitからLinuxサブシステムへのチェックアウトやPyCharmファイルでの編集に関する問題を抱えていましたが、すぐには見えず問題がありました。
devcode=/DevCode
if [ ! -L $devcode ]; then
ln -s /mnt/c/DevCode /DevCode
fi
私はUbuntu地域の私の.bashrcで上記を持っていました。シームレスに動作しています。私は問題なくWindowsを編集してUbuntuで実行/テストすることができました。
私も同様にWSLとwin10の間でファイルをコピーする必要がありました。私はUbuntuのインストールでsshdを有効にしたので、win10からLinuxにsshすることができました。その後、winscpを使ってファイルをやり取りします。最適ではありませんが、ファイルをあまり頻繁にコピーしません。 sshdを有効にするために使用していた投稿を見つけようとしましたが、見つかりませんでした。