/usr/local/bin/fish kann nicht ausgeführt werden: Keine solche Datei oder kein solches Verzeichnis

/usr/local/bin/fish kann nicht ausgeführt werden: Keine solche Datei oder kein solches Verzeichnis

Vorab: Ich bin neu auf diesem Gebiet und lerne noch, also haben Sie bitte Geduld mit mir, was die Terminologie und das Auffinden von Dingen betrifft.

Aufstellen: Virtuelle Umgebung von Proxmox 7.2-3 + Container + ubuntu-22.04-standard_22.04-1_amd64.tar.zst

Ausgabe: Für das Terminal/die Konsole meines Ubuntu-Servers habe ich gestern Fisher und Fish Shell installiert, nur um das Erscheinungsbild zu ändern. Als ich versuchte, den Container neu zu starten, trat ein Anmeldeproblem auf, das anscheinend mit dem Speicherort von Fish zusammenhing, den ich in das Verzeichnis gelegt hatte. Ich bin mir jedoch nicht ganz sicher.

Ich weiß nicht, wie ich mich wieder in den Container einloggen kann und möchte nicht alles wieder von vorne einrichten müssen. Ich bin für jede Hilfe dankbar.

Weitere Hintergrundinfos und Bilder:

Antwort1

Zuerst die gute Nachricht: Es gibt mit ziemlicher Sicherheit eine Möglichkeit zur Wiederherstellung. Die schlechte Nachricht ist, dass ich nicht genau weiß, wie ich in diesem Fall vorgehen soll. Ich werde unten einige Vorschläge machen, was meiner Meinung nach funktionieren könnte, aber ich verwende Proxmox nicht und kann es daher nicht direkt testen.

Aber zuerst möchte ich einen Vorschlag machen:

  • Verwenden Sie bei der Installation von Software dieoffizielle Dokumentezuerst, und nicht eine „technische“ Site wie die, auf die Sie oben verwiesen haben.

Der Artikel, auf den Sie oben verlinkt haben, isteinfach falsch und wird (hat) zu einer Systembeschädigung führenDer korrekte Prozess wird vom Fish-Team dokumentiert in:

Mit Entschuldigung, aber jetzt ein bisschen Schimpferei – Websites wie die, auf die Sie verlinkt haben, sind „Websites mit bezahlten Inhalten“. Sie bezahlen für Artikel von „freien“ (wenn auch „geprüften“) Autoren. Leider kann die Qualität der Inhalte sehr unterschiedlich sein. Um Ihnen das schlimmste Beispiel zu geben, das ich je gesehen habe: Letztes Jahr kam ein neuer Besucher in ein Subreddit, das ich häufig besuche, und zwar zu einem technischen Thema. Die Person schrieb (sinngemäß, aber zutreffend):

Ich habe keine Ahnung von [Thema] und habe es noch nie verwendet, aber ich wurde gebeten, einen Artikel darüber zu schreiben, wie man [xyz] mit [Thema] macht. Kann mir jemand eine Anleitung geben?

Beachten Sie, dass ich nicht weißwelcheSite, für die sie geschrieben haben.

Natürlich ist nicht jeder Artikel auf jeder kostenpflichtigen Website so, aber der Artikel, auf den Sie sich oben beziehenIstschlecht. Jede Dokumentation, die Ihr System absolut und ohne Fragen beschädigen wird, istschlechtDas Hauptproblem besteht darin:

Schritt 4 („Fish-Shell als Standard-Shell festlegen“) in diesem Dokument lautet:

sudo chsh -s /usr/local/bin/fish

Das sind einfach mehrere Fehler zu einem zusammengefasst!

  • Erstens und am schlimmsten -- Das ist der falsche Pfad für Fish unter Ubuntu. Ich glaube, das ist der Ort, an dem Fish unter macOS installiert würde. Unter Ubuntu ist es (normalerweise) /usr/bin/fish, aber wie die Fish-Dokumente zeigen, sollten Sie den Speicherort immer bestätigen aufdeinSystem.

  • Durch die Verwendung sudo chshohne Benutzernamen wird die Shell für den Root-Benutzer geändert. Dies ist schlecht und erschwert die Wiederherstellung erheblich.

    Wenn Sie die Shell für den aktuellen Benutzer mit ändern möchten sudo, lautet die Syntax:

    sudo chsh -s <path/to/shell> $USER
    
  • Aber selbst das ist keine gute Idee, da chshder Root-Benutzer (auch bekannt als sudo chsh) Ihnen erlaubt, einen „schlechten Shell-Pfad“ festzulegen. Sie werden zwar gewarnt, aber der Pfad wird trotzdem geändert /etc/passwdund verwendet den von Ihnen angegebenen schlechten Shell-Pfad.

    sudo chsh -s /this/is/bad $USER
    grep $USER /etc/passwd
    

    Sie werden sehen, dass der falsche Pfad eingestellt ist.

    Randbemerkung: Ich kann diese Dinge auf meinem System ausprobieren, ohne eine Beschädigung befürchten zu müssen, da ich das Windows-Subsystem für Linux verwende, eine virtuelle Umgebung, in der ich weiß, dass ich diese Fehler problemlos beheben kann. Proxmox-Container sollten eigentlich der Technologie sehr ähnlich sein, die WSL „unter der Haube“ verwendet, daher gehe ich davon aus, dass es dort einen ebenso einfachen Wiederherstellungsmechanismus gibt.

DerrichtigDer Befehl zum Ändern Ihrer Shell in Fish unter Ubuntu lautet einfach:

chsh -s /usr/bin/fish

Solange Sie nicht verwenden sudo, wird es sich änderndeinBenutzer-Shell, und es wirdbestätigendass die Schale gut ist.


Wiederherstellungsplan

Du erwähnst, dass du Ubuntu als Container in Proxmox verwendest. Das ist gut, glaube ich. Wenn du eine VM verwenden würdest, müsstest du Ubuntu unter Proxmox mit einer gültigen Shell booten. Das wäre immer noch möglich.

Auch hier ist die schlechte Nachricht, dass ich nicht ganz sicher bin, wie das geht, und da Proxmox nicht läuftunterUbuntu, Sie benötigen möglicherweise eine andere Site (z. B. die Proxmox-Foren), um diese Frage zu beantworten. Im Allgemeinen müssen Sie Folgendes tun:

  • Greifen Sie auf die Proxmox-Befehlszeile zu.

  • Ich gehe davon aus, dass Sie gemäß der Proxmox-Dokumentation daspctTool zum Verwalten des Containers.

  • Greifen Sie mit einer gültigen Shell auf den Ubuntu-Container zu. Sie können es versuchen pct exec <vmid> /usr/bin/bash.

  • Sie müssen sich rootim Ubuntu-Container befinden, der meiner Meinung nach die Standardeinstellung ist pct.

Wenn duhabenZugriff auf den Ubuntu-Container in einer gültigen Shell als Root:

  • chsh -s /usr/bin/bash

    Es besteht die Möglichkeit, dass dies nicht funktioniert, da die Shell für den aktuellen Benutzer ungültig ist. Ich glaube jedoch, dass Root die Shell trotzdem zurücksetzen kann (ein normaler Benutzer würde dies definitiv nicht tun). Wenn Sie jedoch auf Probleme stoßen, ist die andere Alternative:

    vipw
    

    Dadurch können Sie Ihre /etc/passwddirekt bearbeiten und /usr/local/bin/fishin ändern /usr/bin/bash.

    Dadurch wird die Shell Ihres Root-Benutzers auf eine gute zurückgesetzt. Für Root würde ich empfehlen, die Shell auf Bash zu belassen. Ändern Sie Ihre Shell für Ihren normalen, nicht rootenden Benutzer in Fish, wie in den Fish-Dokumenten beschrieben.

verwandte Informationen