Làm thế nào để tôi chuyển từ một vỏ không xác định sang bash?


41

Tôi đã ngạc nhiên rằng tôi đã không tìm thấy câu hỏi này trên trang web. Vì vậy, hôm nay $đã xuất hiện sau khi tôi đăng nhập như một người dùng mới. Điều này thật bất ngờ vì lời nhắc của người dùng chính của tôi bắt đầu bằng username@computername:~$.

Vì vậy, làm thế nào để tôi chuyển từ vỏ khác sang bash?


8
Chỉ vì $xuất hiện chứ username@computername:~$không có nghĩa là nó không bash. Định dạng chính xác của lời nhắc được đặt bởi biến PS1, có thể được thiết lập hoặc tùy chỉnh khác nhau cho những người dùng khác nhau.
frabjous

3
Re: @frabjous echo $SHELLđể tìm hiểu xem vỏ hiện tại của bạn là gì.
xenoterracide

1
@mouche @frabjous và bắt đầu bằng $ thực sự phổ biến đối với bash, một số shell không bash như zsh sử dụng% out of the box, tôi tin rằng các shell khác sử dụng những thứ khác.
xenoterracide

1
@mouche /bin/shthường không có nghĩa là thường là một liên kết tượng trưng cho thứ khác. Tôi muốn nhập ls -l /bin/shđể xem những gì nó là một liên kết tượng trưng. Trong một số trường hợp là một liên kết tượng trưng cho một cái gì đó thay đổi hành vi của nó, tôi không nghĩ bash là như vậy.
xenoterracide

3
@xenoterracide - Sử dụng bashnhư /bin/sh vô hiệu hóa nhiều tính năng bash (nó chuyển sang chế độ tuân thủ POSIX).
Chris Xuống

Câu trả lời:


61

Giả sử shell không xác định hỗ trợ chạy lệnh tuyệt đối, bạn có thể thử: /bin/bash

Để thay đổi shell mặc định, tôi sẽ sử dụng chsh(1). Sử dụng mẫu:chsh -s /bin/bash $USER


1
Chsh có thay đổi vĩnh viễn shell hay chỉ cho phiên hiện tại không?
mouche

10
@mouche Vĩnh viễn; nó thay đổi mục nhập của bạn trong/etc/passwd
Michael Mrozek

@mouche, chsh(1)sẽ chỉ cho phép thay đổi thành một vỏ được liệt kê trong /etc/shells(và có sẵn, có lẽ). chsh -lliệt kê các lựa chọn thay thế. Hãy cẩn thận, một số (như nologin) được xác định cho các tài khoản không bao giờ được sử dụng để đăng nhập (cách hay để tự khóa), có thể có các bổ sung cục bộ cho các mục đích sử dụng đặc biệt.
vonbrand

19

Bạn gõ vào bash. Nếu bạn muốn đây là một thay đổi vĩnh viễn, vỏ mặc định thành /bin/bashbằng cách chỉnh sửa /etc/passwd.

Đây là một số đoạn trích từ tôi /etc/passwd:

avahi:x:84:84:Avahi daemon:/:/bin/false
xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh
postgres:x:88:88::/var/lib/postgres:/bin/zsh
bob:x:1001:1001::/home/bob:/bin/bash
usbmux:x:140:140:usbmux user:/:/sbin/nologin

Trường cuối cùng chứa shell, Sửa đổi trường sau cùng :với shell hợp lệ hoặc không hợp lệ sẽ hoạt động. /bin/false/sbin/nologincả hai đều có nghĩa là người dùng không có vỏ đăng nhập thực sự, mặc dù nếu pam không được thiết lập đúng thì điều này không có nghĩa là họ không thể đăng nhập (tôi đã báo cáo một lỗi về điều này trong Arch Linux, bởi vì bạn có thể đăng nhập bằng đồ họa mà không cần phải có một vỏ đăng nhập). /bin/bash/bin/zshlà cả hai shell hợp lệ, hãy xem /etc/shellsdanh sách các shell hợp lệ trên hệ thống của bạn. Đây là của tôi /etc/shellsnếu bạn quan tâm.

/bin/sh
/bin/bash
/bin/ksh
/bin/zsh
/bin/dash

Có, bạn có thể sử dụng chshhoặc usermodđể làm những việc tương tự, hãy nhớ đây chỉ là các tệp văn bản có cấu trúc và TIMTOWTDI.


11
Bạn có thể muốn sử dụng chshthay vì chỉnh sửa thủ côngpasswd
Michael Mrozek

@Michael có khoảng 5 (POOMA) các cách khác nhau để thay đổi vỏ trong /etc/passwdTôi không cảm thấy muốn liệt kê bất kỳ trong số chúng, vì tôi luôn làm thủ công. chsh và usermod đều có thể làm điều đó.
xenoterracide

Loay hoay với các tệp cấu hình là một ý tưởng tồi (TM), một lỗi có thể khiến hệ thống không thể sử dụng được. Vâng, nó thường là cách duy nhất / nhanh nhất, nhưng sau đó làm nó với sự cẩn thận cao độ .
vonbrand

12

Nếu chsh hoặc chỉnh sửa thủ công cấu hình sẽ không hoạt động, nhưng tập lệnh ~ / .profile được thực thi khi đăng nhập, hãy thêm dòng này:

exec /bin/bash --login

Sau khi nhìn xung quanh một lúc, đây là giải pháp tôi cần. Cảm ơn!
PearsonArtPhoto

Ý tưởng tuyệt vời, đặc biệt nếu shell chọn nguồn phát khi khởi động ...
vonbrand

touch ~/.bash_profilehoặc nếu không bash sẽ tự thực thi trong một vòng lặp: bash mất ~/.profiletrong trường hợp ~/.bash_profilekhông tồn tại.
har-wradim
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.