У мене розміщений сервер Debian. Коли я входжу через ssh, мене вітає середовище sh. Як я можу це змінити, щоб я починався в баш-середовищі?
У мене розміщений сервер Debian. Коли я входжу через ssh, мене вітає середовище sh. Як я можу це змінити, щоб я починався в баш-середовищі?
Відповіді:
Як звичайний користувач, ви можете змінити стандартну оболонку для входу за допомогою chsh
команди. Ось приклад:
chsh -s /bin/bash
Інший варіант - використовувати usermod як root:
usermod -s /bin/bash username
adduser
, він повинен встановити це bash за замовчуванням. За замовчуванням налаштовано /etc/adduser.conf
. В іншому випадку обов`язково вкажіть оболонку за допомогою useradd
.
Ви редагуєте, /etc/passwd
де останній запис - оболонка за замовчуванням. Зробіть /bin/bash
.
Крім того, ви можете змінити системний стандарт за замовчуванням /bin/sh
не бути bash.
/bin/sh
є /bin/dash
. А для чого варто, щоб інші два відповіді були однаковими і досягають одного і того ж кінця різними способами. Що б там не було.
/etc/passwd
вкрай не рекомендують. Помилка редагування може порушити вхід для всіх користувачів, для відновлення потрібен носій для відновлення або завантаження в режимі одного користувача. Є такі інструменти, як usermod
для зміни /etc/passwd
.
/etc/passwd
.
/bin/bash
- /bin/sh
це те саме, що і його виконання --posix
, що може мати небажані результати.
/bin/bash
як свою оболонку всі ті роки на всіх машинах. Вам потрібен більш конкретний аргумент.
Системна оболонка /bin/sh
за замовчуванням в останніх випусках Ubuntu налаштована таким чином /bin/dash
. Просто запустивши таку команду:
sudo dpkg-reconfigure dash
ви можете змінити його до старого за замовчуванням /bin/bash
.
Завдяки цьому ви можете домогтися бажаного ефекту створення bash
інтерактивної оболонки, не змінюючи жодних налаштувань користувача (немає chsh
або usermod
), і це буде працювати для всіх користувачів, у яких наразі встановлено оболонку /bin/sh
.
У цьому є лише один невеликий недолік: час завантаження Ubuntu може дещо збільшитися, оскільки dash
завантажується менше пам’яті і трохи швидше працює (недарма - вона настільки обмежена у функціях). Але я думаю, що оцінити цей ефект буде досить важко, особливо для хостинг-середовища.
Крім того, іноді прикро бачити сценарії оболонок, які не працюють належним чином, оскільки вони використовують деякі bash
розширені функції, які не підтримуються dash
. Використовуючи цей рецепт, переконайтеся, що цього не станеться.
Для отримання додаткової інформації див. Вікі Ubuntu щодо цього питання .
/bin/sh
використовується як інтерпретатор для сумісних з сценаріями оболонок POSIX - це не обов'язково найкраща інтерактивна оболонка; якщо ви хочете bash
бути вашою системною оболонкою, вам слід встановити бажану оболонку для входу за допомогою chsh
або належних adduser
викликів. використання dpkg-reconfigure
- це поганий вибір, якщо userA хоче zsh, а userB хоче bash і обидва наполягають на тому, щоб / bin / sh була їх оболонкою за замовчуванням.
zsh
, а користувач до bash
них він матиме його. Якщо користувачC налаштований sh
, він матиме bash
, який у поточному випадку Ubuntu за замовчуванням для нових користувачів все одно
dpkg-reconfigure zsh
встановити zsh
як / bin / sh, а потім dpkg-reconfigure dash
встановити dash
як / bin / sh, що є своєрідним тупиком; Я головним чином кажу, що бажано встановити оболонку входу на оболонку, яку хоче використовуватись, а не переживати обручі, щоб зробити / bin / sh гарною оболонкою для входу.
dpkg-reconfigure dash
може sh
вказувати bash
, а не калічити dash
. Всі інші снаряди залишатимуться цілими.
У випадку, коли ви намагаєтесь використовувати спільний обліковий запис (з будь-якої причини) і не можете змінити оболонку за замовчуванням, ви можете запустити
ssh -t <user@hostname> bash -l
Якщо вам потрібно зберегти своє оточення від якоїсь іншої оболонки, то спочатку можете запустити цю оболонку; наприклад
ssh -t <user@hostname> ksh -c bash -l
-l
варіант?