
Вступая к теме, скажу, что я новичок во всем этом и все еще учусь, поэтому, пожалуйста, будьте снисходительны ко мне, когда дело касается терминологии и местонахождения вещей.
Настраивать: Виртуальная среда Proxmox 7.2-3 + Контейнер + ubuntu-22.04-standard_22.04-1_amd64.tar.zst
Проблема: Для терминала/консоли моего сервера Ubuntu я вчера установил fisher и fish shell просто для того, чтобы изменить внешний вид. Когда я попытался перезапустить контейнер, я получил проблему со входом, которая, по-видимому, была связана с местоположением fish, которое я поместил в каталог. Хотя я не совсем уверен.
Я не знаю, как снова войти в контейнер, и мне бы не хотелось начинать все с нуля, настраивая все заново. Я был бы благодарен за любую помощь.
Дополнительная справочная информация и изображения:
решение1
Во-первых, хорошие новости — почти наверняка есть способ восстановиться. Плохая новость в том, что я не знаю, как именно это сделать в данном случае. Ниже я дам несколько советов о том, что, по моему мнению, сработает, но я не запускаю Proxmox, поэтому не могу проверить напрямую.
Но сначала я собираюсь сделать предложение:
- При установке программного обеспечения используйтеофициальные документыво-первых, а не «технический» сайт, такой как тот, на который вы ссылались выше.
Статья, на которую вы ссылаетесь выше,просто неправильно и приведет (привело) к повреждению системыПравильный процесс задокументирован командой Fish в:
- Руководство по установке для Ubuntu(ссылка на главнуюРыбастраница).
- Документация поустановка оболочки по умолчанию
С извинениями, немного тирады — Сайты, подобные тому, на который вы дали ссылку, являются «сайтами платного контента». Они платят за статьи от «внештатных» (хотя и «проверенных») авторов. К сожалению, качество контента может сильно различаться. Вот худший пример, который я видел: в прошлом году в Subreddit, который я часто посещаю, пришел новый посетитель по технической теме. Человек написал (перефразируя, но точно):
Я не знаю [тема] и никогда не использовал ее, но меня попросили написать статью о том, как сделать [xyz] с [тема]. Может ли кто-нибудь дать мне какие-нибудь указания?
Обратите внимание, что я не знаю.которыйсайт, для которого они писали.
Конечно, не все статьи на каждом сайте с платным контентом такие, но статья, на которую вы ссылаетесь выше,являетсяПлохо. Любая документация, которая абсолютно, без вопросов, испортит вашу систему,плохой. Основная проблема в:
Шаг 4 («Сделать панцирь рыбы панцирем по умолчанию») в этом документе гласит:
sudo chsh -s /usr/local/bin/fish
Это просто несколько ошибок, объединенных в одну!
Первое и худшее — это неправильный путь для Fish в Ubuntu. Я считаю, что именно туда Fish будет установлен в macOS. В Ubuntu это (обычно)
/usr/bin/fish
, но, как указано в документации Fish, вы всегда должны подтверждать местоположение натвойсистема.При использовании
sudo chsh
без имени пользователя он меняет оболочку для пользователя root. Это плохо и делает восстановление намного сложнее.Если вы хотите изменить оболочку для текущего пользователя с помощью
sudo
, синтаксис будет следующим:sudo chsh -s <path/to/shell> $USER
Но даже это плохая идея, так
chsh
как пользователь root (он жеsudo chsh
) позволит вам задать путь "плохой оболочки". Он предупредит вас, но все равно изменится,/etc/passwd
чтобы использовать указанный вами путь плохой оболочки.sudo chsh -s /this/is/bad $USER grep $USER /etc/passwd
Вы увидите, что выбран неверный путь.
Примечание: я могу пробовать эти вещи на своей системе, не опасаясь повреждения, поскольку я использую Windows Subsystem for Linux, виртуальную среду, в которой я знаю, что могу легко восстановить любую из этих ошибок. Контейнеры Proxmox должны быть на самом деле очень похожи на технологию, которую WSL использует «под капотом», поэтому я предполагаю, что там есть такой же простой механизм восстановления.
TheправильныйКоманда для смены оболочки на Fish в Ubuntu проста:
chsh -s /usr/bin/fish
Пока вы не используете sudo
, это изменится.твойоболочка пользователя, и это будетподтвердитьчто оболочка хорошая.
План восстановления
Вы упоминаете, что используете Ubuntu как контейнер в Proxmox. Это хорошо, я думаю. Если бы вы использовали VM, вам нужно было бы загрузить Ubuntu под Proxmox, используя допустимую оболочку. Это все еще было бы возможно.
Опять же, плохая новость в том, что я не совсем уверен, как это сделать, и поскольку Proxmox не работаетподUbuntu, вам может понадобиться другой сайт (например, форумы Proxmox), чтобы ответить на этот вопрос. В общем, вам нужно будет:
Получите доступ к командной строке Proxmox.
Из документации Proxmox я делаю вывод, что вам нужно будет использовать
pct
инструмент для управления контейнером.Получите доступ к контейнеру Ubuntu с допустимой оболочкой. Вы можете попробовать
pct exec <vmid> /usr/bin/bash
.Вам нужно будет находиться
root
внутри контейнера Ubuntu, который, как я полагаю, будет контейнером по умолчанию дляpct
.
Как только выиметьдоступ к контейнеру Ubuntu в допустимой оболочке как root:
chsh -s /usr/bin/bash
Есть вероятность, что это не сработает, так как оболочка для текущего пользователя недействительна. Однако я считаю, что root все равно сможет сбросить оболочку (обычный пользователь определенно не сможет). Однако, если у вас возникнут проблемы, есть еще один вариант:
vipw
Это позволит вам редактировать его
/etc/passwd
напрямую и изменить/usr/local/bin/fish
на/usr/bin/bash
.Это сбросит оболочку вашего пользователя root обратно на хорошую. Для root я бы рекомендовал оставить оболочку Bash. Измените оболочку на Fish для вашего обычного пользователя, не являющегося пользователем root, как описано в документации Fish.