Grundlegende Befehle funktionieren nicht, dh: -bash: ls: Keine solche Datei oder kein solches Verzeichnis

8

Ich bin neu in Unix und bei der Installation eines Programms für meine Dissertation muss ich mit dem PATH für die grundlegenden Unix-Befehle wie z ls. Jedes Mal, wenn ich tippe lsund den Verzeichnisnamen, für den ich die Dateien auflisten möchte, wird Folgendes angezeigt:

-bash: ls: No such file or directory

Was kann ich tun, um dies zu beheben? Jede Hilfe wird sehr sehr geschätzt!

Mariaa
quelle
Der Grund, warum es nicht funktioniert, aber CD ist in meiner Antwort dokumentiert
Michael Durrant

Antworten:

23

Setzen Sie Ihren Pfad jetzt zurück (dh vor jeder Art von Abmeldung) mit:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Ihr vollständiger Pfad wird nicht wiederhergestellt, aber die grundlegenden Dienstprogramme sind wieder verfügbar.

Hier ist ein Beispiel für die Art der Dinge, die passieren:

Sie hatten eine PATH-Variable (beim Lesen als $ PATH bezeichnet)

Etwas wie:

$ echo $PATH
/home/durrantm/.rvm/gems/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/durrantm/.rvm/rubies/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/bin:/h
ome/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:
/home/durrantm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/durrantm/.rvm/bin:/home/durrantm/.rvm/bin:/home/durrantm
/.rvm/bin

Sie haben versucht, etwas hinzuzufügen, aber Sie haben es versehentlich verwendet

PATH=PATH:other_dir

anstatt

PATH=$PATH:other_dir

und das Ergebnis war, dass dein Weg wurde

PATH:other_dir

und dann funktionieren alle Dienstprogramme wie ls und sed nicht

Sie können den minimalen Satz durch Ausführen korrigieren

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


Dies ist besonders nützlich, wenn eine Login- Punktdatei Ihren PATH durcheinander bringt. Überprüfen Sie Ihre .bashrc- und / oder .bash_profile-Dateien auf PATH-Änderungen.

Wie Greg sagt, können Sie sich auch einfach abmelden (oder sicherer, ein neues Fenster öffnen, falls das Öffnen eines neuen Fensters nicht funktioniert!) Und dann $ PATH aus einem neuen Fenster wiedergeben.

Das gleiche passiert, wenn Sie path=keine Werte verwenden. Es "löscht" Ihren aktuellen Pfad und verursacht diese Probleme. Starker Text

Was , warum , wenn Sie diese Probleme cd funktioniert und ls haben nicht funktioniert:

  • cd ist ein "eingebauter" Befehl, der Ihren PATH nicht benötigt, um das Programm zu finden
  • ls ist ein Programm und muss PATH verwenden, um herauszufinden, wo es sich befindet.

Sie können dies sehen mit:

$ builtin ls
-bash: builtin: ls: not a shell builtin
14:47:29 mdurrant C02MH2DQFD58 /Users/mdurrant
$ builtin cd
14:47:31 mdurrant C02MH2DQFD58 /Users/mdurrant
$

Kein Fehler bedeutet, dass der Befehl integriert ist

Vor dem Weitergehen (oder Abmelden) ...

Stellen Sie sicher, dass Sie alle Änderungen testen ( insbesondere diejenigen an .bashrc, .profile usw., die PATH-Einstellungsbefehle ausführen), indem Sie ein neues Fenster öffnen oder source ~ / .bash_profile ausführen, um es auszuführen. Es wird auch empfohlen, das Fenster und den Editor (wenn Sie die Datei .bash_profile ändern) geöffnet zu lassen, falls Ihre Änderungen nicht funktionieren, und Sie daran zu hindern, neue Fenster zum Bearbeiten der Datei zu öffnen. Sie können jedoch weiterhin TextEdit oder einen anderen einfachen Editor verwenden, um die Datei zu ändern (z. B. ohne Befehlszeile und vi). Achten Sie darauf, NICHT neu zu starten, wenn Ihre Shell defekt ist oder Sie sich möglicherweise nicht einmal anmelden können. und das ist wirklich sehr, sehr schlecht (ohne dass ein anderer Account suvon dir abgespritzt wird). Ist mir passiert!

Mein 'Extra Account'-Fix war damals aber auch ein Lebensretter und für alle sehr zu empfehlen (mach es jetzt!)

Michael Durrant
quelle
Hallo! Vielen Dank! Ich habe gerade den Pfad zurückgesetzt, aber wenn ich ein neues Terminalfenster öffne, passiert dasselbe. Ich habe dann mehr ~ / .bash_profile gemacht, um nach Änderungen zu suchen und es zeigt dies: export PATH =
Mariaa
Ist das normal?
Mariaa
Auch wenn ich $ PATH wiederhole, bekomme ich keine Ergebnisse. Ich bin mir nicht sicher, ob das normal ist oder nicht
Mariaa
@Mariaa Wie setzen Sie den Pfad zurück? Teilen Sie die Datei oder den Befehl mit.
jgr208
1
Stellen Sie sicher, dass Sie alle Änderungen testen, indem Sie ein neues Fenster öffnen oder source ~/.bash_profilees ausführen. Es wird auch empfohlen, das Fenster und den Editor (in dem Sie die .bash_profile-Datei ändern) geöffnet zu lassen, falls Ihre Änderung nicht funktioniert, und Sie daran zu hindern, neue Fenster zum Bearbeiten der Datei zu öffnen. Sie können jedoch weiterhin TextEdit oder einen anderen einfachen Editor verwenden, um die Datei zu ändern.
Michael Durrant
8

Die Änderungen, die Sie vorgenommen haben, PATHsind wahrscheinlich vorübergehend. Schließen Sie die Shell, in der Sie sich befinden, exitund öffnen Sie sie erneut.

Wenn Sie eine Datei bearbeitet haben, in der die PATHfür neu geöffnete Shells festgelegt sind, geben Sie den vollständigen Pfad zu den Befehlen an, um die Änderungen zu korrigieren (z. B. /usr/bin/vim).

Greg Hewgill
quelle
Hallo! Danke (: Ich habe es versucht, aber es funktioniert nicht. Ich schätze, ich habe wirklich etwas Seltsames getan. Ich erinnere mich, dass ich vim verwendet habe, um etwas mit PATH zu tun, und dann wurde alles durcheinander gebracht. Ugh, ich wünschte, ich wüsste mehr Computersprache um dieses Ding in
Ordnung
ist /usr/binoder irgendein binVerzeichnis in Ihrem Pfad? @ Mariaa
jgr208
jgr208: das ist mein Pfad: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
Mariaa
@Mariaa Sie haben bin oder irgendetwas nicht gelöscht und Sie haben Lesezugriff auf die Dateien richtig?
jgr208
Ich kann dies jedoch nur sehen oder einen Befehl verwenden, wenn ich PATH = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin dies in ein neues Terminal eingebe Fenster ... ansonsten kann ich keinen der Befehle verwenden. Es erkennt sie nicht: S
Mariaa