Làm cách nào để thay đổi shell mặc định trong Cygwin?


29

Tôi đang cố gắng thay đổi shell mặc định của mình từ bash thành zsh trong cygwin.

  1. Lệnh unix bình thường chshkhông có sẵn trên cygwin
  2. Tệp etc / passwd dường như không còn được sử dụng nữa trong các phiên bản hiện tại của cygwin.

Vì vậy, làm thế nào khác vỏ có thể được thay đổi?

Câu trả lời:


22

Câu trả lời phụ thuộc vào cách bạn bắt đầu Cygwin.

Nếu bạn bắt đầu Cygwin với Cygwin.bat , hãy sửa đổi dòng cuối cùng /Cygwin.bat(thường C:\cygwin\hoặc C:\cygwin64\).

Nếu bạn bắt đầu Cygwin với mintty , sau đó thêm shell làm tham số. mintty /usr/bin/zsh -


2
Cảm ơn bạn, tôi đang sử dụng Conemu. Phải thay đổi sh.exethành zsh.exetrong Cài đặt Conemu> khởi động> tác vụ> bash Cygwin Bash>set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\sh.exe --login -i
gyaani_guy

@gyaani_guy Tôi chỉ đang sử dụng ConEmu để thực thi CygWin\bin\zsh.exe. sh.exe --loginsẽ ra mắt Bash, làm thế nào để bạn thay đổi điều đó? Hoặc nó không quan trọng nào? Tôi tưởng tượng sh.exe --loginlà thực thi không cần thiết shtrước khi zsh...
deed02392

@ deed02392 Tôi không chắc là tôi hiểu .. nhưng lệnh chính xác tôi đang sử dụng là set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\zsh.exe --login -ihth
gyaani_guy

@gyaani_guy cảm ơn, tôi đã bối rối vì trong bình luận đầu tiên của bạn, bạn dường như ngụ ý rằng bạn bắt đầu zsh với sh.exe. Bây giờ tôi nhận ra tôi đã không đọc chính xác tin nhắn của bạn :-)
deed02392

3
Ví dụ mintty không làm việc cho tôi. Nó có vấn đề cho đến khi tôi biến nó thành một vỏ đăng nhập bằng cách thêm -l: mintty.exe -i /Cygwin-Terminal.ico /usr/bin/zsh -l -
Morgan May

18

Nếu bạn chạy mintty.exetrực tiếp hoặc chạy Cygwin Terminal từ menu start hoặc desktop (là lối tắt đến mintty.exe), bạn có thể đặt biến môi trường SHELL trong Windows thành /usr/bin/zsh.

Trên Windows 7:

  1. Nhấn phím Windows.
  2. Bắt đầu gõ "môi trường".
  3. Khi nó xuất hiện, chọn "Chỉnh sửa biến môi trường cho tài khoản của bạn".

Phần còn lại nên tự giải thích.


5
Điều này thực sự cần nhiều phiếu bầu hơn. Tôi chưa bao giờ thấy tài liệu này ở bất cứ đâu, và rõ ràng đó là phương pháp dự định.
Kevin Mills

1
Đối với những người không muốn dựa vào tìm kiếm để tìm bảng thích hợp, nhấp chuột phải vào menu Bắt đầu và chọn "Hệ thống" để khởi chạy bảng điều khiển Hệ thống. Sau đó nhấp vào "Cài đặt hệ thống nâng cao" từ cột bên trái. Trên cửa sổ "Thuộc tính hệ thống" bật lên, nhấp vào "Biến môi trường ..." để khởi chạy trình chỉnh sửa biến môi trường.
David C.

Làm việc hoàn hảo!
bkunzi01

16

Sao chép từ câu trả lời của tôi trên Stack Overflow :


Thay vì tạo tệp passwd, mà Cygwin khuyên dùng 1 , bạn có thể chỉnh sửa /etc/nsswitch.conf . Thêm hoặc chỉnh sửa dòng sau:

db_shell: / usr / bin / cá

Mặt trái / lên của phương pháp này là, nếu bạn có nhiều người dùng, thay đổi này ảnh hưởng đến tất cả họ. Mặt lên / lên là nó chết đơn giản. Điều hấp dẫn duy nhất là bạn phải khởi động lại Cygwin.

Nếu bạn làm sử dụng mkpasswd sau sự thay đổi này, nó sẽ sử dụng vỏ mặc định mới của bạn cho tất cả người dùng được phép đăng nhập vào.


1 Tài liệu mkpasswd nói điều này:

Không sử dụng lệnh này để tạo tệp cục bộ / etc / passwd, trừ khi bạn thực sự cần nó. Xem Hướng dẫn sử dụng Cygwin để biết thêm thông tin.

Tôi thực sự không thể tìm thấy bất kỳ lý do chắc chắn nào trong hướng dẫn của người dùng , ngoài một đề cập rằng bạn sẽ phải tạo lại các tập tin / etc / passwd và / etc / group nếu người dùng và nhóm của bạn thay đổi, mà tôi cho là đủ lý do. Tôi có thể nói rằng quá trình này có phần dễ bị lỗi cho người mới.


7

Đây là một hack: đặt đây là dòng đầu tiên của bạn ~/.bash_profile:

exec zsh
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.