Câu trả lời:
Trừ khi bạn sử dụng cygwin như một môi trường nhiều người dùng (trong trường hợp đó sẽ sử dụng chsh
như bạn làm trong một môi trường tiêu chuẩn.)
Nếu không, bạn chỉ cần thay đổi cygwin.bat để chạy zsh -l -i
thay vì bash --login -i
và nó sẽ chạy như một vỏ đăng nhập.
Tất nhiên, nếu bạn muốn chạy nhiều shell từ khi khởi động, chỉ cần tạo một tập hợp các .bat
tệp để tải các shell khác nhau. ( sh
, ksh
, csh
, fish
Vv)
Tôi cảm thấy tôi nên cập nhật điều này để cung cấp thông tin về việc thực hiện việc này mà không cần chsh
thực hiện ở phần cuối Unix. Chỉnh sửa /etc/passwd
tập tin và thay thế lần xuất hiện của /bin/bash
với /bin/zsh
. (Đây thực sự là những gì chsh
sẽ làm, nhưng theo cách này, bạn sẽ làm điều đó cho tất cả người dùng trong một lần.)
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
và chỉnh sửa /etc/passwd
tệp vừa tạo
Nếu tôi đọc đúng câu hỏi của bạn, bạn đang tìm kiếm cái gì khác so với những gì chère vật tư (trong đó, cấp, là khá mát mẻ theo đúng nghĩa của nó).
Phiên bản hiện tại của Cygwin không có tệp / etc / passwd và hệ thống tôi đang làm việc có thông tin tài khoản Windows trong cơ sở dữ liệu miền ngoài tầm kiểm soát của tôi. Do đó, chsh không còn được hỗ trợ.
Tôi cũng thấy rằng bash không được mã hóa cứng vào tập lệnh startxwin và cũng không được mã hóa cứng trong bất kỳ tệp .bat nào. Hóa ra bạn không cần phải nghịch ngợm với các tập tin .bat.
Tìm kiếm cách thay đổi vỏ của tôi, tôi tìm thấy một số lời khuyên về mkpasswd
Tôi đã thêm nó vào hỗn hợp.
Trang người đàn ông nói:
SYNOPSIS mkpasswd [OPTIONS]... OPTIONS Don't use this command to generate a local /etc/passwd file, unless you really need one. See the Cygwin User's Guide for more information. -c,--current Print current user. DESCRIPTION The mkpasswd program can be used to create a /etc/passwd file. Cygwin doesn't need this file, because it reads user information from the Windows account databases, but you can add an /etc/passwd file, for instance if your machine is often dis‐ connected from its domain controller. Note that this information is static, in contrast to the informa‐ tion automatically gathered by Cygwin from the Windows account databases. If you change the user information on your system, you'll need to regenerate the passwd file for it to have the new information. For very simple needs, an entry for the current user can be cre‐ ated by using the option -c.
(Tôi không biết tại sao khoảng cách lại "tắt" ...)
Sau đó tôi đã sử dụng lệnh sau:
mkpasswd -c | sed -e 'sX / bashX / zshX' | tee -a / etc / passwd
Lần tới khi bạn mở Cygwin Terminal, nó sẽ chuyển thẳng đến zsh
Và đó, tôi nghĩ, là những gì bạn yêu cầu.
Tôi chỉ cần thêm bin
thư mục trong thư mục cygwin vào Biến môi trường đường dẫn Windows của mình và sau đó tạo một lối tắt đến:
mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login
hoặc chỉ thay đổi phím tắt menu bắt đầu mặc định của Cygwin thành giống nhau.
/bin/zsh
thay vì zsh
.
the bin directory in the cygwin directory to my Windows Path Environment Variable
hoạt động mà không có sự thay đổi này đối với tôi
i
là không cần thiết vì nó sẽ là một vỏ đăng nhập và không interactive
.
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 so với 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 / zsh
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.
Giả sử bạn quan tâm đến việc thay đổi shell được sử dụng trong mintty / Cygwin Terminal, trước tiên, nó sẽ kiểm tra biến môi trường SHELL, sau đó là tệp passwd (bây giờ không tồn tại), sau đó rơi trở lại / bin / sh, đó là những gì nó dường như đang làm theo mặc định
Tôi đã có thể đặt biến môi trường SHELL trong Windows thành /usr/bin/zsh
và nó hoạt động mà không có bất kỳ thay đổi nào khác. Tôi chỉ thay đổi nó cho người dùng Windows của tôi, không phải trên toàn cầu.
Đặt biến môi trường có thể khác nhau đối với các phiên bản Windows khác nhau. Hãy thử tìm kiếm "môi trường" trong Bảng điều khiển Windows của bạn. Đối với tôi, trong Windows 7, đó là Bảng điều khiển → Hệ thống → Cài đặt hệ thống nâng cao, hiển thị hộp thoại / bảng điều khiển Thuộc tính hệ thống, sau đó là tab Nâng cao, sau đó là nút Biến môi trường, hiển thị hộp thoại Biến môi trường, sau đó tạo một biến người dùng mới được đặt tên SHELL
với giá trị /usr/bin/zsh
. Sau đó OK trở lại với tất cả những điều đó và bắt đầu một mintty mới.
Chỉ cần nghĩ rằng tôi sẽ thêm câu trả lời này trong trường hợp nó giúp bất cứ ai đang tìm kiếm nó. Nếu bạn sử dụng chere (có thêm tùy chọn "Bash prompt here" vào menu ngữ cảnh nhấp chuột phải của bất kỳ thư mục nào), bạn có thể đặt nó thành zsh ("Zsh Prompt Here") với:
chere -i -t mintty -s zsh