Як запустити bash, коли ssh'ing на мій сервер?


29

У мене розміщений сервер Debian. Коли я входжу через ssh, мене вітає середовище sh. Як я можу це змінити, щоб я починався в баш-середовищі?

linux  bash  debian  sh 

1
Не насправді питання програмування. Надалі ви, мабуть, найкраще задавати такі питання на Unix / Linux .
tylerl

Відповіді:


33

Як звичайний користувач, ви можете змінити стандартну оболонку для входу за допомогою chshкоманди. Ось приклад:

chsh -s /bin/bash

Інший варіант - використовувати usermod як root:

usermod -s /bin/bash username

1
usermod працював як шарм. Чи є якийсь спосіб встановити його за замовчуванням для башти, коли я додаю нового користувача, або мені потрібно кожного разу запускати команду?

Якщо ви використовуєте adduser, він повинен встановити це bash за замовчуванням. За замовчуванням налаштовано /etc/adduser.conf. В іншому випадку обов`язково вкажіть оболонку за допомогою useradd.
Йорданм

5

Ви редагуєте, /etc/passwdде останній запис - оболонка за замовчуванням. Зробіть /bin/bash.

Крім того, ви можете змінити системний стандарт за замовчуванням /bin/shне бути bash.


1
Йо, що там з приводом на дорогу? Напр., Ubuntu за замовчуванням /bin/shє /bin/dash. А для чого варто, щоб інші два відповіді були однаковими і досягають одного і того ж кінця різними способами. Що б там не було.
Дірк Еддельбуеттель

4
Ручні редагування /etc/passwdвкрай не рекомендують. Помилка редагування може порушити вхід для всіх користувачів, для відновлення потрібен носій для відновлення або завантаження в режимі одного користувача. Є такі інструменти, як usermodдля зміни /etc/passwd.
Йорданм

1
Дурниці. Тут працює Linux з '94 року. Ніколи не ламався /etc/passwd.
Дірк Еддельбуеттель

2
Приємно чути, що ви були дуже обережні. Не у всіх є. Ще одна примітка до вашого оновлення, запуск якої /bin/bash- /bin/shце те саме, що і його виконання --posix, що може мати небажані результати.
Йорданм

Подивіться, я був розробником / обслуговувачем Debian ще з 1995 року. У нас раніше за замовчуванням був bash, ми з різних причин переходили на більш прості оболонки. Я використовую /bin/bashяк свою оболонку всі ті роки на всіх машинах. Вам потрібен більш конкретний аргумент.
Дірк Еддельбуеттель

2

Вам потрібно відредагувати свій профіль користувача, це можна зробити безпосередньо, відредагувавши /etc/passwdфайл, або ви можете скористатися usermodкомандою, щоб зробити це за вас. Синтаксис, який ви шукаєте, виглядає приблизно так:

usermod -s /bin/bash joeuser

1

Системна оболонка /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 була їх оболонкою за замовчуванням.
umläute

якщо користувачA явно налаштований на zsh, а користувач до bashних він матиме його. Якщо користувачC налаштований sh, він матиме bash, який у поточному випадку Ubuntu за замовчуванням для нових користувачів все одно
mvp

звичайно, але ваше рішення запропонувало щось на зразок dpkg-reconfigure zshвстановити zshяк / bin / sh, а потім dpkg-reconfigure dashвстановити dashяк / bin / sh, що є своєрідним тупиком; Я головним чином кажу, що бажано встановити оболонку входу на оболонку, яку хоче використовуватись, а не переживати обручі, щоб зробити / bin / sh гарною оболонкою для входу.
umläute

Я лише сказав, що dpkg-reconfigure dashможе shвказувати bash, а не калічити dash. Всі інші снаряди залишатимуться цілими.
mvp

1

У випадку, коли ви намагаєтесь використовувати спільний обліковий запис (з будь-якої причини) і не можете змінити оболонку за замовчуванням, ви можете запустити

ssh -t <user@hostname> bash -l

Якщо вам потрібно зберегти своє оточення від якоїсь іншої оболонки, то спочатку можете запустити цю оболонку; наприклад

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

Це працює досить добре, але чому -lваріант?
nbkhope

@nbkhope це забезпечить запуск .bashrc для вас.
UKMonkey

0

Ні chshабо usermodне працювали для мене, але я виявив , що ви можете зробити це через PuTTY.

Перейти до Connection > SSHі встановити Remote commandв bash.

Зауважте, що вам не вдасться до exitоболонки за замовчуванням, вона просто закриє з'єднання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.