Cách thay đổi shell mặc định cho Linux susbsystem cho Windows


10

Tôi đã cài đặt hệ thống con Linux cho Windows 10. Nó hoạt động tốt, nhưng tôi muốn thay đổi môi trường shell mặc định cho hệ thống con.

Tôi đã làm sudo apt-get install fishvà sau đó chsh -s /usr/bin/fish. Nhưng khi tôi khởi động bash.exetrong Windows, nó luôn khởi động bash (tôi nghĩ nó có thể dự đoán được).

Có ai biết lập luận để thay đổi hành vi này?


Khi bạn bắt đầu, bash.exeràng bạn đang bắt đầu bash. Tôi không quen thuộc với hệ thống con Linux trong Windows 10, nhưng tôi hy vọng sẽ có một số cách để khởi động trình bao "Linux" mà không bắt đầu rõ ràng một trình bao cụ thể.
một CVn

Bạn đã thử một phiên bản xấu xí của bashrc hoặc bashprofile của bạn để định tuyến lại các cuộc gọi bash tương tác đến cá? Thêm một dòng như isatty && exec fishcó thể đáng để thử khi bạn hoàn toàn không có giải pháp thực tế.
A. Loiseau

Câu trả lời:


6

Bạn không thể thay đổi shell mặc định vì hệ thống con Linux được khởi động thông qua bash.exe nằm trong thư mục hệ thống.

Tuy nhiên, bạn có thể tạo một lối tắt mới giống như lối tắt đã tồn tại cho bash và làm cho nó chạy lệnh

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

Bằng cách này bạn sẽ được chạy cá ngay lập tức.


1
Tôi đã sử dụng %systemroot%\system32\bash.exe ~ -c /bin/zshđể làm cho ZSH mở trong thư mục nhà của tôi.
David Pärsson

Hoặc, đặt trường "Bắt đầu trong" trong lối tắt %userprofile%để bắt đầu trình bao trong thư mục chính của bạn.
dOxxx

@konqui Điều này không phá vỡ bất kỳ vỏ khác. Đó là một lối tắt mới để bắt đầu nó. Bash của bạn sẽ hoạt động tốt
Sami Kuhmonen

@SamiKuhmonen không có bất cứ điều gì nói về một phím tắt mới - tôi đã sửa nó ngay bây giờ tôi có thể sống với câu trả lời này.
konqui

9

Kể từ Fall Creators Update, bạn có thể sử dụng chshđể thiết lập shell mặc định. Điều này vẫn không hoạt động nếu bạn đang chạy WSL bằng bash.exelệnh nhưng điều này hoạt động nếu bạn chạy WSL bằng ubuntu.exelệnh.

Ngoài ra, kể từ Fall Creators Update, chúng ta nên cài đặt WSL OS từ Windows Store .

Đặt zshlàm vỏ mặc định:

chsh -s /bin/zsh

sau đó chạy (hoặc khởi động lại) ubuntu.exetừ dấu nhắc lệnh.


5

Mở bash, chạy nano ~/.bashrcvà dán cái này vào:

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

Chỉ cần thay đổi vỏ thành fishhoặc bất cứ điều gì bạn muốn. Việc -xkiểm tra rất quan trọng nếu bạn từng cài đặt lại Bash - bạn sẽ không thể mở nó sau khi cài đặt mới vì execlệnh sẽ thất bại và sau đó Bash chỉ đóng.

Nếu điều đó xảy ra, xóa / đổi tên .bashrctệp của bạn ở đây:

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

Các -ttôi tin rằng sẽ kiểm tra nếu stdout đang mở. Không chắc tại sao điều đó quan trọng, tôi đã sao chép nó từ bài viết này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.