Frage Jeder Befehl schlägt fehl mit "Befehl nicht gefunden" nach Änderung von .bash_profile?


Ich habe mein .bash_profile aktualisiert, und unglücklicherweise habe ich ein paar Updates gemacht und jetzt bekomme ich:

env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
-bash: tar: command not found
-bash: grep: command not found
-bash: cat: command not found
-bash: find: command not found
-bash: dirname: command not found
-bash: /preexec.sh.lib: No such file or directory
-bash: preexec_install: command not found
-bash: sed: command not found
-bash: git: command not found

Mein Bash_Profile zieht tatsächlich andere .sh-Dateien ein (Quellen), so dass ich nicht genau weiß, welche Änderung das verursacht haben könnte.

Wenn ich es jetzt versuche und zu einer Liste von Dateien, bekomme ich:

>ls
-bash: ls: command not found
-bash: sed: command not found
-bash: git: command not found

Gibt es Tipps, wie Sie die Fehlerquelle ausfindig machen können und wie Sie das Terminal für grundlegende Dinge wie das Auflisten von Dateien usw. nutzen können?


32
2017-09-12 02:08


Ursprung


Was passiert, wenn Sie den vollständigen Pfad wie folgt verwenden: / bin / ls? Und welche Veränderungen haben Sie vorgenommen? - K. P. MacGregor
Ja, fügen Sie Ihr .bash_profile ein - January
/ bin / ls listet die Dateien auf, aber dann sehe ich diese 2 Zeilen darunter: -bash: sed: command not found -bash: git: command not found - Blankman


Antworten:


Es sieht für mich so aus, als würden Sie den Standard überschreiben PATH Umgebungsvariable. Die Art der Fehler, die Sie haben, zeigt dies an PATH beinhaltet nicht /bin, wo die obigen Befehle (einschließlich bash) wohnen.

Zum Beispiel, wenn Sie das tun

PATH=/home/user/bin

Anstatt von

PATH="$PATH":/home/user/bin

50
2017-09-12 02:34



Ich habe das einmal gemacht: export PATH=PATH:EC2_HOME/bin - Blankman
Sie müssen '$' in der zweiten PATH-Zeichenfolge verwenden - export PATH=$PATH:EC2_HOME/bin - Manula Waidyanatha
komisch, wie 'ec2-describe-regions' nicht funktioniert, obwohl es in meinem Pfad ist, doch das funktioniert: $ EC2_HOME / bin / ec2-describe-regions Ich habe auch einen Quell-Reload gemacht .... - Blankman
macht ein Echo $ PATH, ich sehe es wird 3 mal wiederholt: EC2_HOME/bin:EC2_HOME/bin:EC2_HOME/bin  Wie kann ich das beheben, Neustart? Quelle, es scheint nicht zu beheben. - Blankman
Schau, wir wissen nicht, was du machst, welche anderen Dateien du beschaffst, was in ihnen steckt. Und ja, jedes Mal, wenn Sie die Datei beziehen, Sie anhängen Dinge zu Ihrem Pfad (was in Ordnung ist, weil .bash_profile normalerweise nur einmal gelesen wird). Gehe eins nach dem anderen durch und schau was passiert. Ist EC2_HOME auch keine Variable? Wenn ja, dann sollten Sie es mit einem vorangehen $ so was: export PATH=$PATH:$EC2_HOME/bin - January


Eine Möglichkeit, mit dem Debuggen Ihres Bash-Skripts zu beginnen, wäre das Starten einer Subshell mit der Option -x:

$ bash --login -x

Dies zeigt Ihnen jeden Befehl und seine Argumente, die beim Starten dieser Shell ausgeführt werden.

Die Option --login wird angegeben, weil .bash_profile von Login-Shells gelesen wird. Weitere Informationen zum Debuggen von Bash-Skripten finden Sie hier: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html.

Letztendlich denke ich, dass der Vorschlag vom Januar für Sie funktionieren wird, aber dieser Link ist für künftige Probleme lesenswert.


14
2017-09-12 03:23





Ich habe das Problem gefunden. Es hat für mich funktioniert und es könnte für dich funktionieren ...

Ich war standardmäßig mit meinem Editor auf Windows (LF / CR) gespeichert. Da ich beide Systeme nutze, erschien es logisch. Als ich mich mit meinem Ding anlegen musste .bash_profile, Erkannte ich nach dem Auskommentieren und Versuchen, dass nichts funktionierte. Ich habe meine Saves im OS X-Format geändert (nur CR) und voilà! Kein "Befehl nicht gefunden" im Terminal!

Es kann einfach so einfach sein!


9
2018-01-07 22:14



Sehr subtiles Ding, das mich verrückt machte. Danke, dass du diese Antwort hinzugefügt hast! - samuel.molinski
Das hat mir geholfen! Vielen Dank! - MoLow
Das habe ich erlebt! Vielen Dank. Quick Tipp verwendet diesen Befehl, um Dateien in Ihrer Unix-Umgebung zu konvertieren: $ dos2unix .bash_profile - melwil
Bist du sicher, dass du das getan hast? Da OS X Unix ist, verwendet es Unix-artige Zeilenenden mit einem einzelnen Zeilenvorschub (LF), nicht Wagenrücklauf (CR). Das einzige populäre Betriebssystem, das letztere verwendete, war OS 9 und ältere und Linux / Ubuntu-Anwendungen wären ziemlich verwirrt. - David Foerster


Nachdem ich nicht mehr laufen konnte. ~ / .bash_profile oder andere übliche Befehle wie whoami, grep usw. Ich habe einen Weg gefunden, die erforderlichen Pfade einfach wieder zu exportieren:

export PATH=/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/cpanel/composer/bin:/usr/local/easy/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

Dies sollte in den meisten Systemen funktionieren, obwohl einige dieser Pfade nicht in allen Linux-Paketen vorhanden sind. Es hat für mich funktioniert.


6
2017-10-03 19:06





Ich denke, ich habe die Antwort auf das Problem gefunden, wenn nicht für Sie, dann für andere, die ein ähnliches Problem haben. Meine Antwort darauf ist, dass ich keine habe .bash_profile.

Also habe ich im ganzen Internet gesucht und die Lösung gefunden. Welches grundsätzlich das Terminal öffnet, tippe touch ~/.bash_profile und drücke Eingeben. Das hat meine Probleme behoben. Hoffe, es macht dasselbe für dich


3
2018-04-30 15:28



LOL ... -bash: touch: Befehl nicht gefunden - Kumar KL


Ich habe das gleiche Problem wie du. Ich kann nicht viele beliebte Befehle verwenden (ls, vi/vim, ..) und kann nicht bearbeiten /root/.bashrc wenn ich mich anmelde su in die Wurzel.

Endlich. Ich habe die Lösung für dieses Problem gefunden. Loggen Sie sich einfach mit dem Befehl root ein:

su -m

Danach können Sie verwenden

vim /root/.bashrc

um PATH zu bearbeiten.

Viel Glück!


2
2017-11-08 07:40





Ich hatte genau das gleiche Problem:

Wenn ich lxterminal einlege:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash/

Wenn ich genau denselben Befehl in tty2 eingegeben habe, habe ich:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash\r

\ r bedeutet DOS Ende der Zeile, also habe ich Datei geöffnet ~/.bashrc und ändern Sie die Zeilenenden in Krusader in Unix-Stil. Und es funktioniert schon !!! :-)

Die DOS-EOLs machen auch in Bash-Skripten Probleme.


1
2018-03-31 00:27





Ich hatte das gleiche Problem. Sie haben beim Export von PATH möglicherweise ein $ verpasst. Sie sollten das .bash_profile in TextEdit öffnen. Wenn Sie die Datei im Verzeichnis nicht finden können, drücken Sie die Tastenkombination Befehlstaste + Umschalttaste +>, um versteckte Dateien anzuzeigen.

Nehmen Sie dann eine Korrektur an PATH vor und speichern Sie sie.

Geben Sie im Verzeichnis im Terminal Folgendes ein: source .bash_profile.

Dies sollte das Problem beheben.


1
2017-08-06 03:04





Ich habe das gleiche Problem gerade jetzt, nachdem ich das geändert habe .bash_profile. Und ich möchte es zurück ändern, aber jetzt kann ich nicht, weil ich alle Befehle verloren habe, besonders den Befehl nano und den Befehl vim, so dass ich das .bash_profile nicht mit dem Befehl öffnen kann. Und das .bash_profile ist eine versteckte Datei, die ich nicht mit dem Finder öffnen kann.

Also muss ich eine Möglichkeit finden, die .bash_profile-Datei zu öffnen. Nachdem ich viele Möglichkeiten ausprobiert habe, habe ich festgestellt, dass ich es benutzen kann Atom, denn Atom kann alle Dateien in einem Projektordner lesen und die versteckten Dateien einschließen. Also öffne einfach Atom und wähle die File -> Open, wählen <yourusername> Ordner, und dann alle versteckten Dateien in der Atom-Baumansicht angezeigt wird, enthalten die .bash_profile!! Nachdem ich die letzte Änderung entfernt und das Terminal wieder geöffnet habe, kamen alle Befehle zurück! :)


0
2018-02-06 03:57