Невозможно выполнить /usr/local/bin/fish: нет такого файла или каталога

Невозможно выполнить /usr/local/bin/fish: нет такого файла или каталога

Вступая к теме, скажу, что я новичок во всем этом и все еще учусь, поэтому, пожалуйста, будьте снисходительны ко мне, когда дело касается терминологии и местонахождения вещей.

Настраивать: Виртуальная среда Proxmox 7.2-3 + Контейнер + ubuntu-22.04-standard_22.04-1_amd64.tar.zst

Проблема: Для терминала/консоли моего сервера Ubuntu я вчера установил fisher и fish shell просто для того, чтобы изменить внешний вид. Когда я попытался перезапустить контейнер, я получил проблему со входом, которая, по-видимому, была связана с местоположением fish, которое я поместил в каталог. Хотя я не совсем уверен.

Я не знаю, как снова войти в контейнер, и мне бы не хотелось начинать все с нуля, настраивая все заново. Я был бы благодарен за любую помощь.

Дополнительная справочная информация и изображения:

решение1

Во-первых, хорошие новости — почти наверняка есть способ восстановиться. Плохая новость в том, что я не знаю, как именно это сделать в данном случае. Ниже я дам несколько советов о том, что, по моему мнению, сработает, но я не запускаю Proxmox, поэтому не могу проверить напрямую.

Но сначала я собираюсь сделать предложение:

  • При установке программного обеспечения используйтеофициальные документыво-первых, а не «технический» сайт, такой как тот, на который вы ссылались выше.

Статья, на которую вы ссылаетесь выше,просто неправильно и приведет (привело) к повреждению системыПравильный процесс задокументирован командой Fish в:

С извинениями, немного тирады — Сайты, подобные тому, на который вы дали ссылку, являются «сайтами платного контента». Они платят за статьи от «внештатных» (хотя и «проверенных») авторов. К сожалению, качество контента может сильно различаться. Вот худший пример, который я видел: в прошлом году в 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.

Связанный контент