Làm thế nào để biến ZSH thành shell mặc định?


124

Tôi đang cố gắng đặt ZSH làm vỏ mặc định của mình, tuy nhiên nó vẫn tiếp tục quay trở lại bash.

Tôi đã thử mã này:

sudo chsh -s $(which zsh)

Tôi cũng đã thử:

sudo chsh -s /bin/zsh 

Cũng đã thử các lệnh này mà không có sudo. Bất kỳ ý tưởng về những gì tôi cần phải làm. Khi chạy ZSH từ bên trong bash, nó tải lên và hoạt động tốt nhưng tôi muốn đặt nó làm vỏ mặc định.

Câu trả lời:


217

Chỉ cần sử dụng chsh:

chsh -s $(which zsh)

mà không sudo nên làm việc Nếu bạn sử dụng sudonó sẽ thay đổi shell không phải cho người dùng đang làm việc của bạn mà cho root

Cuối cùng, đăng xuất khỏi máy tính của bạn và đăng nhập lại .

Xử lý sự cố:


17
Tôi có cùng một vấn đề và câu trả lời không giải quyết được
Aswin Murugesh 21/07/13

@AswinMurugesh Kiểm tra câu trả lời của tôi
Shailesh Kalamkar

9
bạn cũng có thể chạy sudo chsh -s / bin / zsh userName
Micha Roon

15
Lưu ý: Tôi phải khởi động lại hệ thống của mình trước khi điều này có hiệu lực.
KevinO

không, nó không hoạt động
Haha TTpro

40

Tôi tìm thấy điều này trên diễn đàn superuser

Mở / etc / passwd:

sudo vi /etc/passwd

Tìm dòng với tên người dùng của bạn:

username:x:1634231:100:Your Name:/home/username:/bin/bash

và thay thế bash bằng zsh:

username:x:1634231:100:Your Name:/home/username:/bin/zsh

Đăng xuất và đăng nhập lại để những thay đổi có hiệu lực.


11
Bạn nên hết sức cẩn thận với cách tiếp cận này - thường không phải là ý tưởng tốt nhất để đi khắp nơi với/etc/passwd
Thomas Ward

Mặc dù tôi đã không sử dụng phương pháp này, nhưng nó đã giúp tôi xác minh hiệu quả củachsh -s `which zsh`
jchook

HA Yea này tổng số người sử dụng của tôi. Không thể đăng nhập lại.
Mark Carpenter Jr

6

Bạn cũng có thể làm điều này:

mở tệp bashrc của bạn trong trình chỉnh sửa yêu thích của bạn

sudo nano ~/.bashrc

sau đó thêm dòng bên dưới đầu tập tin

exec zsh

Nó sẽ thực thi lệnh mỗi khi bạn tải terminal và chạy shell zsh của bạn.


13
và nó cũng sẽ phá vỡ tất cả các công việc không tương tác của bạn ( scpví dụ).
Jakuje

Xin lỗi cho downvote, nhưng thay đổi /etc/passwdhoặc chshlà giải pháp tốt hơn và đáng tin cậy hơn.
Timo

Cảm ơn đã làm điều đó. @Timo Tôi đã thực hiện thay đổi trên / etc / passwd và hoặc chsh nhưng mặc định của tôi tiếp tục quay trở lại bash. Tôi đã thêm exec zsh theo phản hồi được đăng và nó hoạt động.
Stryker

3

Nếu zsh không / bin / zsh thì chsh sẽ không hoạt động. Trên Ubuntu là / usr / bin / zsh. nên làm chsh -s /usr/bin/zshhay chsh -s `which zsh`nên làm. Cũng cần phải đăng nhập lại vào phiên máy tính để bàn.


Trên VPS Ubuntu của tôi, nó / bin / zsh
Wilhelm Erasmus

Trên Ubuntu của tôi, tôi thấy nó trong cả hai /bin/zsh/usr/bin/zsh
blue_chip

2
Trên mỏ của tôi (14.04, với zsh từ repo chính), có hai zsh và cả hai đều là các liên kết hai lớp: / usr / bin / zsh -> / etc / thay thế / zsh-usrbin -> / bin / zsh5 và / bin / zsh -> / etc / lựa chọn thay thế / zsh -> / bin / zsh5
wjandrea

1

Tôi gặp vấn đề với quyền thay đổi shell theo người dùng hiện tại nhưng tiếp theo sẽ giúp tôi (bạn nên đặt thư mục 'zsh' chính xác cho máy tính của mình):

sudo chsh -s /bin/zsh <myUserName>

0

Thật kỳ lạ, câu trả lời "được chấp nhận" không hiệu quả với tôi khi tôi nhận được

chsh: PAM: Authentication failure

Để giải quyết vấn đề này, hãy chỉnh sửa / etc / passwd của bạn và đảm bảo rằng nó trỏ đến vị trí zsh. (Bạn có thể tìm thấy điều này bằng cách chạy "which zsh") Trong trường hợp của tôi, người dùng của tôi được gọi là "quản trị trang web" trông như thế này:

webmaster:x:1001:1001:webmaster,,,:/var/www/webmaster:/usr/bin/zsh

Tôi tin rằng nó nên yêu cầu mật khẩu. Tôi đã nhận được lỗi tương tự trên cài đặt bạc hà trước đây của tôi. Một cái hiện tại hoạt động tốt mặc dù
Wilhelm Erasmus

Một số người khác có cùng một vấn đề, và hóa ra họ đã chạy chsh -s zsh, điều này làm cho mục nhập mật khẩu của họ không chính xác.
wjandrea

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.