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 chsh
lệ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/passwd
nơ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/sh
không bị bash.
/bin/sh
là /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/passwd
rấ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/bash
như /bin/sh
là 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/bash
như 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/sh
trong 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ó bash
vỏ tương tác mà không thay đổi bất kỳ cài đặt người dùng nào (không chsh
hoặ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ì dash
mấ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ố bash
tí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 bash
trở 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 chsh
hoặc adduser
gọi đúng . sử dụng dpkg-reconfigure
là 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.
zsh
và userB bash
sẽ 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 zsh
là / bin / sh, và sau đó dpkg-reconfigure dash
đặt dash
là / 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 dash
có 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
-l
tùy chọn?