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?
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?
Câu trả lời:
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
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.
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.
/bin/shlà /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ì.
/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.
/etc/passwd.
/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.
/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.
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 .
/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.
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
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.
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.
Đố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
-ltùy chọn?