Làm cách nào để bắt đầu bash khi ssh'ing vào máy chủ của tôi?


29

Tôi có một máy chủ Debian được lưu trữ. Khi tôi đăng nhập qua ssh, tôi được chào đón với môi trường sh. Làm cách nào để thay đổi nó để tôi bắt đầu trong môi trường bash?

linux  bash  debian  sh 

1
Không thực sự là một câu hỏi lập trình. Trong tương lai, có lẽ bạn nên đặt câu hỏi như thế này trên Unix / Linux .
tylerl

Câu trả lời:


33

Là người dùng thông thường, bạn có thể thay đổi vỏ đăng nhập mặc định của mình bằng chshlệnh. Đây là một ví dụ:

chsh -s /bin/bash

Một tùy chọn khác là sử dụng usermod làm root:

usermod -s /bin/bash username

1
usermod làm việc như một lá bùa. Có cách nào để đặt nó thành mặc định thành bash khi tôi thêm người dùng mới hay tôi phải chạy lệnh mỗi lần?

Nếu bạn sử dụng adduser, nó nên đặt nó thành bash theo mặc định. Mặc định được cấu hình trong /etc/adduser.conf. Mặt khác chỉ định shell rõ ràng với useradd.
jordanm

5

Bạn chỉnh sửa /etc/passwdnơi mục cuối cùng là vỏ mặc định. Làm cho nó /bin/bash.

Ngoài ra, bạn có thể thay đổi thay đổi mặc định hệ thống /bin/shkhông bị bash.


1
Yo, có chuyện gì với downvote lái xe? Ví dụ, Ubuntu mặc định /bin/sh/bin/dash. Và đối với những gì nó có giá trị, hai câu trả lời khác là giống hệt nhau và đạt được cùng một kết thúc bằng các phương tiện khác nhau. Bất cứ điều gì.
Dirk Eddelbuettel

4
Chỉnh sửa thủ công /etc/passwdrất nản lòng. Một lỗi chỉnh sửa có thể phá vỡ thông tin đăng nhập cho tất cả người dùng, yêu cầu phương tiện khôi phục hoặc khởi động sang chế độ người dùng duy nhất để sửa chữa. Có những công cụ như usermodđể thay đổi /etc/passwd.
jordanm

1
Vô lý. Chạy Linux kể từ '94 tại đây. Không bao giờ bị vỡ /etc/passwd.
Dirk Eddelbuettel

2
Thật tốt khi nghe bạn đã rất cẩn thận. Không phải ai cũng có. Một lưu ý về cập nhật của bạn, tung ra /bin/bashnhư /bin/shlà giống như thực hiện nó với --posix, có thể có những kết quả không mong muốn.
jordanm

Hãy nhìn xem, tôi cũng là một nhà phát triển / bảo trì Debian từ năm 1995. Chúng tôi đã từng sử dụng bash như một mặc định, chúng tôi đã chuyển sang các shell đơn giản hơn vì nhiều lý do. Tôi đã sử dụng /bin/bashnhư vỏ của mình trong tất cả các năm trên tất cả các máy. Bạn cần một lập luận cụ thể hơn.
Dirk Eddelbuettel

2

Bạn cần chỉnh sửa hồ sơ người dùng của mình, bạn có thể thực hiện việc này trực tiếp bằng cách chỉnh sửa /etc/passwdtệp hoặc bạn có thể sử dụng usermodlệnh để làm điều đó cho bạn. Cú pháp bạn đang tìm kiếm trông giống như thế này:

usermod -s /bin/bash joeuser

1

Vỏ hệ thống mặc định /bin/shtrong các bản phát hành Ubuntu gần đây được cấu hình /bin/dash. Bằng cách đơn giản là chạy lệnh sau:

sudo dpkg-reconfigure dash

bạn có thể thay đổi nó trở lại mặc định cũ /bin/bash.

Với điều này, bạn có thể đạt được hiệu quả mong muốn khi có bashvỏ tương tác mà không thay đổi bất kỳ cài đặt người dùng nào (không chshhoặc usermod) và nó sẽ hoạt động cho tất cả người dùng hiện có cài đặt shell /bin/sh.

Chỉ có một nhược điểm nhỏ này: thời gian khởi động Ubuntu có thể tăng nhẹ, vì dashmất ít bộ nhớ hơn và chạy nhanh hơn một chút (không có gì lạ - nó rất hạn chế về tính năng). Nhưng tôi nghĩ sẽ khá khó để đo lường hiệu ứng này, đặc biệt là đối với môi trường lưu trữ.

Ngoài ra, đôi khi thật khó chịu khi thấy các tập lệnh shell không hoạt động đúng bởi vì chúng sử dụng một số bashtính năng nâng cao không được hỗ trợ dash. Sử dụng công thức này sẽ đảm bảo điều này sẽ không xảy ra.

Để biết thêm thông tin, hãy xem Ubuntu wiki về vấn đề này .


bạn nên tách biệt các trường hợp sử dụng: /bin/shđược sử dụng làm trình thông dịch cho các tập lệnh shell tương thích POSIX - nó không nhất thiết phải là trình bao tương tác tốt nhất; nếu bạn muốn bashtrở thành hệ thống vỏ của mình, bạn nên đặt vỏ đăng nhập ưa thích của mình bằng cách sử dụng chshhoặc addusergọi đúng . sử dụng dpkg-reconfigurelà một lựa chọn tồi nếu userA muốn zsh và userB muốn bash và cả hai đều khăng khăng muốn có / bin / sh làm vỏ mặc định.
umläute

nếu userA được cấu hình rõ ràng zshvà userB bashsẽ có nó. Nếu userC được cấu hình thành sh, anh ta sẽ có bash, đó là mặc định Ubuntu hiện tại cho người dùng mới
mvp

chắc chắn, nhưng giải pháp của bạn đã đề xuất một cái gì đó như dpkg-reconfigure zshđặt zshlà / bin / sh, và sau đó dpkg-reconfigure dashđặt dashlà / bin / sh là một loại bế tắc; Tôi chủ yếu nói rằng tốt nhất là nên đặt shell đăng nhập vào shell mà người ta muốn sử dụng thay vì đi qua các vòng để tạo / bin / sh một shell đăng nhập tốt.
umläute

Tôi chỉ nói rằng dpkg-reconfigure dashcó thể làm cho shđiểm bash, hơn là làm tê liệt dash. Tất cả các vỏ khác sẽ vẫn còn nguyên.
mvp

1

Đối với trường hợp bạn đang cố gắng sử dụng tài khoản dùng chung (vì bất kỳ lý do gì) và không thể thay đổi trình bao mặc định, thì bạn có thể chạy

ssh -t <user@hostname> bash -l

Nếu bạn cần giữ môi trường của mình khỏi một số shell khác, thì bạn có thể chạy shell đó trước; ví dụ

ssh -t <user@hostname> ksh -c bash -l

Điều đó hoạt động khá tốt, nhưng tại sao các -ltùy chọn?
nbkhope

@nbkhope nó sẽ đảm bảo rằng .bashrc được chạy cho bạn.
UKMonkey

0

Không chshhoặc usermodđang làm việc cho tôi, nhưng tôi thấy rằng bạn có thể làm điều này thông qua PuTTY.

Tới Connection > SSHvà thiết lập Remote commandđể bash.

Lưu ý rằng bạn sẽ không thể vào exitvỏ mặc định của mình, nó sẽ chỉ đóng kết nối.

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.