У меня есть сервер Debian. Когда я вхожу через ssh, меня приветствует окружение sh. Как я могу изменить это, чтобы я начал в среде bash?
У меня есть сервер Debian. Когда я вхожу через ssh, меня приветствует окружение sh. Как я могу изменить это, чтобы я начал в среде bash?
Ответы:
Как обычный пользователь, вы можете изменить оболочку входа по умолчанию, используя 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, и userB для bashних он будет иметь. Если userC настроен на 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вариант?