Как мне запустить bash при подключении ssh'а к моему серверу?


29

У меня есть сервер Debian. Когда я вхожу через ssh, меня приветствует окружение sh. Как я могу изменить это, чтобы я начал в среде bash?

linux  bash  debian  sh 

1
Не совсем вопрос программирования. В будущем вам, вероятно, лучше задать такие вопросы в Unix / Linux .
Tylerl

Ответы:


34

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

chsh -s /bin/bash

Другой вариант - использовать usermod от имени root:

usermod -s /bin/bash username

1
usermod работал как шарм. Есть ли какой-нибудь способ установить по умолчанию bash при добавлении нового пользователя, или мне нужно каждый раз запускать команду?

Если вы используете 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

если userA явно настроен на zsh, и userB для bashних он будет иметь. Если userC настроен на 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.