Làm cách nào để thay đổi Đăng nhập Shell trên Mac OS X từ bash sang zsh?


90

Tôi đang cố gắng thay đổi Shell đăng nhập của Mac OS X từ bashsang zsh. Tôi thấy điều đó là có thể trong Mac OS X Leopard , nhưng đối với OS X Lion, tôi không thể tìm ra cách nào. Tôi thực sự hy vọng có thể thay đổi vỏ Đăng nhập từ bash sang thứ khác. Tôi không chắc chắn chính xác nơi để tìm kiếm.


Sau khi đổi shell thành zsh, tôi vẫn phải khởi chạy zsh bằng tay. Đăng xuất không giúp được gì. Sau đó tôi đã thay đổi zsh sang shell đăng nhập tối đa. Đăng xuất và có nó.

1
Nếu không có gì khác, bạn luôn có thể sửa đổi .bashrc để tìm và thực thi zsh. if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi. Gợi ý, khi sửa đổi tập lệnh khởi động shell, hãy đảm bảo giữ cho shell chạy và khởi động một cái mới trong một cửa sổ khác - nếu bạn phá vỡ nó, bạn vẫn có một nơi dễ dàng để sửa nó.
Dan Pritts

Câu trả lời:


101

Bạn có thể thay đổi shell người dùng bằng lệnh sau:

chsh -s /bin/zsh

Lưu ý: Để thay đổi nó cho trình bao không chuẩn, đảm bảo đường dẫn của nó đã được thêm vào /etc/shellstệp.


4
Tôi đã cài đặt phiên bản mới hơn của zsh với Homebrew, đưa zsh vào /usr/local/bin/zsh. Thật không may, chsh không cho phép điều này, nói chsh: /usr/local/bin/zsh: non-standard shell. Câu trả lời của Daniel Beck là một giải pháp phù hợp trong trường hợp này.
adam_0

43
Nếu bạn đang gặp vấn đề với hệ vỏ không chuẩn, tôi nghĩ bạn nên có thể thêm /usr/local/bin/zshvào /etc/shellsvà nó sẽ giải quyết vấn đề đó.
Mike Meyers

13
Thông tin cài đặt zsh homebrew thực sự khuyên bạn nên thêm nó vào / etc / shells: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
George

Đôi khi không hoạt động. Câu trả lời của @ thẳng thắn đảm bảo điều đó
oliverbarnes

1
@Awgie_girl Theo mặc định, /etc/shellsđược sở hữu và chỉ có thể ghi bởi, root (siêu người dùng). Ví dụ, bạn có thể sử dụng sudo vi /etc/shellsđể sử dụng sudo( s uper u ser do ) để chạy vitrình chỉnh sửa để chỉnh sửa /etc/shells. Tôi vừa thử nghiệm trên hệ thống của mình và xác nhận rằng nó KHÔNG được bảo vệ bởi Bảo vệ toàn vẹn hệ thống, vì vậy bạn sẽ có thể chỉnh sửa nó dưới quyền root mà không cần nhảy qua các vòng để vô hiệu hóa SIP.
Spiff

54

Thật thú vị, cùng một phương pháp bạn liên kết đến trong câu hỏi của bạn vẫn hoạt động trong OS X Lion cho đến Sierra (10.12). Sự khác biệt duy nhất: Ngăn tùy chọn được đặt tên Người dùng & Nhóm thay vì Tài khoản .

  1. Mở "Tùy chọn hệ thống" → "Người dùng & nhóm".
  2. Trừ khi biểu tượng khóa đã được mở khóa, hãy nhấp vào biểu tượng khóa và tự xác thực.
  3. Nhấp chuột theo ngữ cảnh vào người dùng trong danh sách tên người dùng (nhấn và giữ Controlphím trong khi nhấp hoặc nhấp chuột phải vào chuột hai nút bằng tay phải).
  4. Trong menu ngữ cảnh, chọn "Tùy chọn nâng cao".
  5. Chọn "Đăng nhập shell" trong trang tính xuất hiện.

Ghi chú ở đầu màn hình "Tùy chọn nâng cao" tuyên bố bạn phải khởi động lại để thay đổi có hiệu lực, nhưng bạn thực sự chỉ cần đăng xuất và đăng nhập lại.

nhập mô tả hình ảnh ở đây


1
Xác nhận rằng điều này hoạt động trong Mountain Lion, cũng như làm việc với "shell không chuẩn" mà bạn có thể tự cài đặt (hoặc cài đặt Homebrew).
adam_0

2
Xác nhận vẫn hoạt động trong 10.10 Yosemite.
ecnepsnai

4
nhấp chuột phải vào tên người dùng để hiển thị menu chứa "tùy chọn nâng cao". Điều đó khiến tôi mất vài phút để tìm thấy.
pdwalker

1
Tại sao buộc ai đó phải đi ra ngoài để thu thập tất cả thông tin trước khi có thể trả lời? Do đó, bình luận trong trường hợp người khác đưa ra giả định tương tự rằng câu trả lời là ở đây chứ không phải ở đây và ở đó.
pdwalker

1
@jvriesem Thật ra thì có. Tôi đoán là bạn đã bỏ qua bước 2.
Daniel Beck

11

Hoặc là:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)

3
Bạn có thể giải thích tại sao điều này trả lời câu hỏi?
ChrisF

Hãy chắc chắn để chạy này sau brew install zsh .
mmell

3
Ngoài ra, hãy cẩn thận rằng đường dẫn của zsh được cài đặt qua homebrew là khác nhau. Tôi làm như sau:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
metakermit

1
CẢNH BÁO: Điều này sẽ phá vỡ vỏ của bạn nếu bạn sao chép / dán nó mà không kiểm tra đường dẫn của zsh trước. Thay vào đó hãy làm những gì metakermit đã nói.
radixhound

1

Nếu bất cứ ai thắc mắc vấn đề tương tự xảy ra trên macOS Sierra và lệnh sau cho phép tôi thay đổi shell mà không gặp vấn đề gì:

chpass -s /usr/local/bin/zsh

1
Điều này trùng lặp một câu trả lời khác và không thêm nội dung mới. Vui lòng không đăng câu trả lời trừ khi bạn thực sự có điều gì đó mới để đóng góp. "chfn và chsh là từ đồng nghĩa của chpass."
DavidPostill
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.