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.
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:
/home/<user name>/Project
- Bukan direktori akar sistem file Windows:
/mnt/c/Users/<user name>/Project$
atauC:\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.
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$
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.
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+)
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.
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"
WSL dapat menjalankan alat Windows langsung dari baris perintah WSL menggunakan [tool-name].exe
. Contohnya,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.exe
Windows , 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
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.
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.
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.
Umpan balik Windows Subsystem for Linux
Windows Subsystem for Linux adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: