Bagaimana cara mengganti shell default untuk Linux susbsystem untuk Windows

10

Saya telah menginstal subsistem Linux untuk Windows 10. Ini berfungsi dengan baik, tetapi saya ingin mengubah lingkungan shell default untuk subsistem.

Saya lakukan sudo apt-get install fishdan kemudian chsh -s /usr/bin/fish. Tetapi ketika saya mulai bash.exedi Windows, selalu memulai bash (saya pikir itu dapat diprediksi).

Adakah yang tahu argumen untuk mengubah perilaku ini?

Iri
sumber
Ketika Anda mulai bash.exeAnda jelas eksplisit mulai bash. Saya tidak terbiasa dengan subsistem Linux di Windows 10, tetapi saya berharap akan ada cara untuk memulai shell "Linux" tanpa secara eksplisit memulai satu shell tertentu.
CVn
Apakah Anda mencoba edisi jelek dari bashrc atau bashprofile untuk merutekan kembali panggilan bash interaktif untuk memancing? Menambahkan garis seperti isatty && exec fishmungkin patut dicoba ketika Anda benar-benar keluar dari solusi yang sebenarnya.
A. Loiseau

Jawaban:

6

Anda tidak dapat mengubah shell default per se karena subsistem Linux dimulai melalui bash.exe yang berada di direktori sistem.

Namun, Anda dapat membuat pintasan baru seperti yang sudah ada untuk bash dan membuatnya menjalankan perintah

%systemroot%\system32\bash -c /usr/bin/fish

Dengan cara ini Anda akan menjalankan ikan segera.

Sami Kuhmonen
sumber
1
Saya dulu %systemroot%\system32\bash.exe ~ -c /bin/zshmembuat ZSH terbuka di direktori home saya.
David Pärsson
Atau, setel bidang "Mulai" di pintasan %userprofile%untuk memulai shell di direktori home Anda.
dOxxx
@konqui Ini tidak memecah shell lain. Ini cara pintas baru untuk memulainya.
Pesta
@SamiKuhmonen tidak ada yang mengatakan tentang pintasan baru - saya memperbaikinya sekarang saya bisa hidup dengan jawaban ini.
konqui
9

Karena Fall Creators Update dapat Anda gunakan chshuntuk mengatur shell default. Ini masih tidak berfungsi jika Anda menjalankan WSL menggunakan bash.exeperintah tetapi ini berfungsi jika Anda menjalankan WSL dengan ubuntu.exeperintah.

Juga, karena Fall Creators Update kita harus menginstal WSL OS dari Windows Store .

Jadikan zshshell default:

chsh -s /bin/zsh

kemudian jalankan (atau mulai ulang) ubuntu.exedari command prompt.

Mikhail
sumber
5

Buka bash, jalankan nano ~/.bashrcdan tempel ini di:

if [[ -t 1 && -x /usr/bin/zsh ]]; then
    exec /usr/bin/zsh
fi

Cukup ganti shell fishatau apa pun yang Anda inginkan. The -xcheck adalah penting jika Anda pernah kembali menginstal Bash - Anda tidak akan bisa membukanya setelah segar instalasi karena execperintah akan gagal dan kemudian Bash hanya menutup.

Jika itu terjadi, hapus / ganti nama .bashrcfile Anda di sini:

C:\Users\<USERNAME>\AppData\Local\lxss\home\<USERNAME>\.bashrc

The -tSaya percaya memeriksa apakah stdout terbuka. Tidak yakin mengapa itu penting, saya menyalinnya dari artikel ini .

Mpen
sumber