Bekerja di seluruh sistem file Windows dan Linux

Ada sejumlah pertimbangan yang perlu diingat saat bekerja antara sistem file Windows dan Linux. Kami telah menguraikan beberapa dari mereka untuk Anda dalam panduan ini, termasuk beberapa contoh dukungan interoperabilitas untuk mencampur perintah berbasis Windows dan Linux.

Penyimpanan dan performa file di seluruh sistem file

Sebaiknya jangan bekerja di seluruh sistem operasi dengan file Anda, kecuali Anda memiliki alasan khusus untuk melakukannya. Untuk kecepatan performa tercepat, simpan file Anda di sistem file WSL jika Anda bekerja di baris perintah Linux (Ubuntu, OpenSUSE, dll). Jika Anda bekerja di baris perintah Windows (PowerShell, Prompt Perintah), simpan file Anda di sistem file Windows.

Misalnya, saat menyimpan file proyek WSL Anda:

  • Gunakan direktori akar sistem file Linux: \\wsl$\Ubuntu\home\<user name>\Project
  • Bukan direktori akar sistem file Windows: /mnt/c/Users/<user name>/Project$ atau C:\Users\<user name>\Project

Saat Anda melihat /mnt/ di jalur file baris perintah WSL, itu berarti Anda bekerja dari drive yang dipasang. Jadi sistem file Windows C:/ drive (C:\Users\<user name>\Project) akan terlihat seperti ini ketika dipasang di baris perintah WSL: /mnt/c/Users/<user name>/Project$. Dimungkinkan untuk menyimpan file proyek Anda pada drive yang dipasang, tetapi kecepatan performa Anda akan meningkat jika Anda menyimpannya langsung di \\wsl$ drive.

Lihat direktori Anda saat ini di Windows File Explorer

Anda dapat melihat direktori tempat file Anda disimpan dengan membuka Windows File Explorer dari baris perintah, menggunakan:

explorer.exe .

Atau, Anda juga dapat menggunakan perintah: powershell.exe /c start . Pastikan untuk menambahkan periode di akhir perintah untuk membuka direktori saat ini.

Untuk melihat semua distribusi Linux yang tersedia dan sistem file akarnya di Penjelajah File Windows, di bilah alamat masukkan: \\wsl$

View project files in Windows File Explorer

Sensitivitas kasus nama file dan direktori

Sensitivitas kasus menentukan apakah huruf besar (FOO.txt) dan huruf kecil (foo.txt) ditangani sebagai berbeda (peka huruf besar/kecil) atau setara (tidak peka huruf besar/kecil) dalam nama file atau direktori. Sistem file Windows dan Linux menangani sensitivitas kasus dengan cara yang berbeda - Windows tidak peka huruf besar/kecil dan Linux peka huruf besar/kecil. Pelajari selengkapnya tentang cara menyesuaikan sensitivitas huruf besar/kecil, terutama saat memasang disk dengan WSL, dalam artikel cara menyesuaikan sensitivitas kasus.

Interoperabilitas antara perintah Windows dan Linux

Alat dan perintah Windows dan Linux dapat digunakan secara bergantian dengan WSL.

  • Jalankan alat Windows (yaitu notepad.exe) dari baris perintah Linux (yaitu. Ubuntu).
  • Jalankan alat Linux (yaitu grep) dari baris perintah Windows (yaitu. PowerShell).
  • Bagikan variabel lingkungan antara Linux dan Windows. (Build 17063+)

Menjalankan alat Linux dari baris perintah Windows

Jalankan biner Linux dari Windows Command Prompt (CMD) atau PowerShell menggunakan wsl <command> (atau wsl.exe <command>).

Contohnya:

C:\temp> wsl ls -la
<- contents of C:\temp ->

Biner dipanggil dengan cara ini:

  • Gunakan direktori kerja yang sama dengan PERINTAH CMD atau PowerShell saat ini.
  • Jalankan sebagai pengguna default WSL.
  • Memiliki hak administratif Windows yang sama dengan proses panggilan dan terminal.

Perintah Linux berikut wsl (atau wsl.exe) ditangani seperti perintah apa pun yang dijalankan di WSL. Hal-hal seperti pekerjaan sudo, perpipaan, dan pengalihan file.

Contoh menggunakan sudo untuk memperbarui distribusi Linux default Anda:

C:\temp> wsl sudo apt-get update

Nama pengguna distribusi Linux default Anda akan tercantum setelah menjalankan perintah ini dan Anda akan dimintai kata sandi Anda. Setelah memasukkan kata sandi dengan benar, distribusi Anda akan mengunduh pembaruan.

Mencampur perintah Linux dan Windows

Berikut adalah beberapa contoh mencampur perintah Linux dan Windows menggunakan PowerShell.

Untuk menggunakan perintah ls -la Linux untuk mencantumkan file dan perintah findstr PowerShell untuk memfilter hasil kata yang berisi "git", gabungkan perintah:

wsl ls -la | findstr "git"

Untuk menggunakan perintah dir PowerShell untuk mencantumkan file dan perintah grep Linux untuk memfilter hasil kata yang berisi "git", gabungkan perintah:

C:\temp> dir | wsl grep git

Untuk menggunakan perintah ls -la Linux untuk mencantumkan file dan perintah > out.txt PowerShell untuk mencetak daftar tersebut ke file teks bernama "out.txt", gabungkan perintah:

C:\temp> wsl ls -la > out.txt

Perintah yang diteruskan ke wsl.exe diteruskan ke proses WSL tanpa modifikasi. Jalur file harus ditentukan dalam format WSL.

Untuk menggunakan perintah ls -la Linux untuk mencantumkan /proc/cpuinfo file di jalur sistem file Linux, menggunakan PowerShell:

C:\temp> wsl ls -la /proc/cpuinfo

Untuk menggunakan perintah ls -la Linux untuk mencantumkan C:\Program Files file di jalur sistem file Windows, menggunakan PowerShell:

C:\temp> wsl ls -la "/mnt/c/Program Files"

Menjalankan alat Windows dari Linux

WSL dapat menjalankan alat Windows langsung dari baris perintah WSL menggunakan [tool-name].exe. Misalnya, notepad.exe.

Aplikasi yang dijalankan dengan cara ini memiliki properti berikut:

  • Pertahankan direktori kerja sebagai prompt perintah WSL (untuk sebagian besar -- pengecualian dijelaskan di bawah).
  • Memiliki hak izin yang sama dengan proses WSL.
  • Jalankan sebagai pengguna Windows aktif.
  • Muncul di Windows Task Manager seolah-olah langsung dijalankan dari perintah CMD.

Executable Windows yang dijalankan di WSL ditangani mirip dengan executable Linux asli -- pipa, pengalihan, dan bahkan pekerjaan latar belakang seperti yang diharapkan.

Untuk menjalankan alat ipconfig.exeWindows , gunakan alat grep Linux untuk memfilter hasil "IPv4", dan gunakan alat cut Linux untuk menghapus bidang kolom, dari distribusi Linux (misalnya, Ubuntu) masukkan:

ipconfig.exe | grep IPv4 | cut -d: -f2

Mari kita coba contoh mencampur perintah Windows dan Linux. Buka distribusi Linux Anda (yaitu. Ubuntu) dan buat file teks: touch foo.txt. Sekarang gunakan perintah ls -la Linux untuk mencantumkan file langsung dan detail pembuatannya, ditambah alat findstr.exe Windows PowerShell untuk memfilter hasilnya sehingga hanya file Anda foo.txt yang ditampilkan dalam hasil:

ls -la | findstr.exe foo.txt

Alat Windows harus menyertakan ekstensi file, mencocokkan kasus file, dan dapat dieksekusi. Non-executable termasuk skrip batch. Perintah asli CMD seperti dir dapat dijalankan dengan cmd.exe /C perintah.

Misalnya, cantumkan konten direktori C:\ sistem file Windows Anda, dengan memasukkan:

cmd.exe /C dir

Atau gunakan ping perintah untuk mengirim permintaan echo ke situs web microsoft.com:

ping.exe www.microsoft.com

Parameter diteruskan ke biner Windows yang tidak dimodifikasi. Sebagai contoh, perintah berikut akan terbuka C:\temp\foo.txt di notepad.exe:

notepad.exe "C:\temp\foo.txt"

Ini juga akan berfungsi:

notepad.exe C:\\temp\\foo.txt

Berbagi variabel lingkungan antara Windows dan WSL dengan WSLENV

WSL dan Windows berbagi variabel lingkungan khusus, WSLENV, dibuat untuk menjembatani distribusi Windows dan Linux yang berjalan di WSL.

WSLENV Properti variabel:

  • Ini dibagikan; itu ada di lingkungan Windows dan WSL.
  • Ini adalah daftar variabel lingkungan untuk dibagikan antara Windows dan WSL.
  • Ini dapat memformat variabel lingkungan agar berfungsi dengan baik di Windows dan WSL.
  • Ini dapat membantu dalam aliran antara WSL dan Win32.

Catatan

Sebelum 17063, hanya variabel lingkungan Windows yang dapat diakses PATH WSL (sehingga Anda dapat meluncurkan Win32 executable dari bawah WSL). Mulai tahun 17063, WSLENV mulai didukung. WSLENV peka huruf besar/kecil.

Bendera WSLENV

Ada empat bendera yang tersedia untuk memengaruhi bagaimana variabel lingkungan diterjemahkan WSLENV .

WSLENV Bendera:

  • /p - menerjemahkan jalur antara jalur gaya WSL/Linux dan jalur Win32.
  • /l - menunjukkan variabel lingkungan adalah daftar jalur.
  • /u - menunjukkan bahwa variabel lingkungan ini hanya boleh disertakan saat menjalankan WSL dari Win32.
  • /w - menunjukkan bahwa variabel lingkungan ini hanya boleh disertakan saat menjalankan Win32 dari WSL.

Bendera dapat digabungkan sesuai kebutuhan.

Baca selengkapnya tentang WSLENV, termasuk FAQ dan contoh pengaturan nilai WSLENV ke perangkaian var lingkungan lain yang telah ditentukan sebelumnya, setiap akhiran dengan garis miring diikuti oleh bendera untuk menentukan bagaimana nilai harus diterjemahkan dan meneruskan variabel dengan skrip. Artikel ini juga menyertakan contoh untuk menyiapkan lingkungan dev dengan bahasa pemrograman Go, yang dikonfigurasi untuk berbagi GOPATH antara WSL dan Win32.

Menonaktifkan interoperabilitas

Pengguna dapat menonaktifkan kemampuan untuk menjalankan alat Windows untuk satu sesi WSL dengan menjalankan perintah berikut sebagai root:

echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop

Untuk mengaktifkan kembali biner Windows, keluar dari semua sesi WSL dan jalankan kembali bash.exe atau jalankan perintah berikut sebagai root:

echo 1 > /proc/sys/fs/binfmt_misc/WSLInterop

Menonaktifkan interop tidak akan bertahan di antara sesi WSL -- interop akan diaktifkan lagi ketika sesi baru diluncurkan.