Thay đổi shell mặc định trong Linux [đã đóng]


318

Làm thế nào có thể thay đổi vỏ mặc định? Các envlệnh đang nói:

SHELL=/bin/tcsh

và tôi muốn thay đổi điều đó thành Bash.


4
Đây là một câu hỏi hay, nhưng nó có thể phù hợp hơn với trang web QA của Linux.
BradleyDotNET

6
đặt nó trong / etc / passwd
resultsway

Câu trả lời:


415

Hãy thử lệnh linux chsh.

Lệnh chi tiết là chsh -s /bin/bash. Nó sẽ nhắc bạn nhập mật khẩu của bạn. Shell đăng nhập mặc định của bạn /bin/bashbây giờ. Bạn phải đăng xuất và đăng nhập lại để thấy sự thay đổi này.

Sau đây được trích dẫn từ trang người đàn ông:

Lệnh chsh thay đổi vỏ đăng nhập người dùng. Điều này xác định tên của lệnh đăng nhập ban đầu của người dùng. Một người dùng bình thường chỉ có thể thay đổi vỏ đăng nhập cho tài khoản của chính mình, siêu người dùng có thể thay đổi vỏ đăng nhập cho bất kỳ tài khoản nào

Lệnh này sẽ thay đổi vỏ đăng nhập mặc định vĩnh viễn.

Lưu ý: Nếu tài khoản người dùng của bạn ở xa, chẳng hạn như trên xác thực Kerberos (ví dụ: Enterprise RHEL) thì bạn sẽ không thể sử dụng chsh.


10
chsh: can only change local entries; use ypchsh instead. Sau đó, ypchsh không có bất kỳ -slựa chọn nào
mahmood

10
@ShaktiMalik Tôi tin rằng tệp cấu hình là /etc/passwd, nhưng tôi đã không kiểm tra lại.
Summer_More_More_Tea

30
Bạn phải đăng xuất và đăng nhập lại để thấy sự thay đổi này.
Neil Traft

22
Trong trường hợp của tôi, tôi có quyền truy cập root nhưng không muốn gây rối với bất kỳ cấu hình nào trên máy chủ thực tế. Tôi đã thêm exec /bin/bashvào ~/.profilevà điều này cho phép tôi đăng nhập trực tiếp vào bash mà không thực hiện bất kỳ thay đổi nào đối với máy chủ. (Vỏ mặc định ban đầu chỉ là /bin/sh)
Paul Nelson Baker

2
@BCqrstoO Cảm ơn bạn vì điều này. Nhưng nếu bạn gõ exitbash thì sao? Bạn sẽ đăng xuất trực tiếp máy chủ hay chỉ cần thoát bash và vào sh và một exityêu cầu khác để đăng xuất khỏi máy chủ?
Summer_More_More_Tea

148

Bạn có thể thay đổi tệp passwd trực tiếp cho người dùng cụ thể hoặc sử dụng lệnh bên dưới

chsh -s /usr/local/bin/bash username

Sau đó đăng xuất và đăng nhập


8
Có lẽ là một ý tưởng tốt để thử which bashtrước khi gọi lệnh trên; số dặm của bạn có thể thay đổi về vị trí. Trong trường hợp của tôi, nó đã được tìm thấy trong/bin/bash
Martin Haeberli

Tôi cũng có thể thêm rằng, chshlệnh là một phần của util-linuxgói; và chsh -s $(which bash) $USERnên cho kết quả giống như trên.

Ngoài ra còn có -ltùy chọn: "danh sách in vỏ".
Betlista

3
nó là chsh -s /bin/bash usernamedành cho tôi
Salvatorelab

Cảm ơn bạn! Điều này giúp tôi khi cố gắng thay đổi nó cho một người dùng khác
Tobias Feil

18

Bạn nên có một "bộ xương" ở đâu đó /etc, có thể /etc/skeleton, hoặc kiểm tra các cài đặt mặc định, có thể /etc/defaulthoặc một cái gì đó. Đó là các tập lệnh xác định các biến môi trường tiêu chuẩn được thiết lập trong quá trình đăng nhập.

Nếu nó chỉ dành cho tài khoản của riêng bạn: hãy kiểm tra tệp (ẩn) ~/.profile~/.login. Hoặc tạo chúng, nếu chúng không tồn tại. Những điều này cũng được đánh giá bởi quá trình đăng nhập.


5
Cộng 1 để trả lời cụ thể câu hỏi (Shell mặc định). Trên Red Hat Linux, nó được chỉ định trong/etc/default/useradd
geedoubleya

@geedoubleya Bạn có thể chỉ định sự khác biệt trong shell đăng nhập và mặc định là gì không?
Betlista

1
Hi @Betlista Shell mặc định là shell được sử dụng cho shell đăng nhập của người dùng mới khi chúng được tạo trừ khi shell cụ thể được cung cấp làm đối số.
geedoubleya
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.