it-swarm.com.de

Jeder Befehl schlägt mit "Befehl nicht gefunden" fehl, nachdem .bash_profile geändert wurde.

Ich habe mein .bash_profile aktualisiert und leider ein paar Aktualisierungen vorgenommen. Jetzt erhalte 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 (quellt sie aus), so dass ich nicht genau sicher bin, welche Änderung dies verursacht haben könnte.

Wenn ich jetzt mal versuche und eine Liste von Dateien anlege, bekomme ich:

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

Irgendwelche Tipps, wie man die Fehlerquelle aufspürt und wie man das Terminal für grundlegende Dinge wie das Auflisten von Dateien usw. verwenden kann?

44
Blankman

Mir scheint, dass Sie zu einem bestimmten Zeitpunkt die Standard-Umgebungsvariable PATH überschreiben. Die Art der Fehler, die Sie haben, zeigt an, dass PATH nicht /bin enthält, in dem sich die obigen Befehle (einschließlich bash) befinden.

Zum Beispiel, wenn Sie das tun

PATH=/home/user/bin

anstatt von

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

Eine Möglichkeit, mit dem Debuggen Ihres Bash-Skripts zu beginnen, besteht darin, eine Subshell mit der Option -x zu starten:

$ 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 zukünftige Probleme eine Lektüre wert.

21
K. P. MacGregor

Möglicherweise habe ich das Problem gefunden. Es hat für mich funktioniert, und es könnte für Sie funktionieren ...

Ich habe mit meinem Editor standardmäßig Windows (LF/CR) gespeichert. Da ich beide Systeme benutze, schien es logisch. Als ich mich mit meinem .bash_profile anlegen musste, wurde mir klar, dass nichts funktionierte, nachdem ich Dinge auskommentiert und ausprobiert hatte. Ich habe meine Spielstände in das OS X-Format (nur CR) geändert und voilà! Kein "Befehl nicht gefunden" mehr im Terminal!

So einfach kann es sein!

9
cyphire

Nachdem ich nicht mehr rennen konnte. ~/.bash_profile oder andere übliche Befehle wie whoami, grep usw. Ich habe mir eine Möglichkeit ausgedacht, die erforderlichen Pfade einfach erneut 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 auf den meisten Systemen funktionieren, obwohl einige dieser Pfade nicht in allen Linux-Paketen vorhanden sind. Es hat bei mir funktioniert.

5
Ananth

Ich glaube, 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 keinen .bash_profile habe.

Also habe ich im ganzen Web gesucht und die Lösung gefunden. Was ist im Grunde das Terminal öffnen, geben Sie touch ~/.bash_profile und drücken Sie Enter. Das hat meine Probleme behoben. Hoffe es macht das selbe für dich

4
Paul

Ich habe das gleiche Problem wie du. Ich kann nicht viele gängige Befehle (ls, vi/vim, ..) verwenden und /root/.bashrc nicht bearbeiten, wenn ich mich mit su bei root anmelde.

Endlich. Ich habe die Lösung für dieses Problem gefunden. Melden Sie sich einfach mit dem folgenden Befehl als root an:

su -m

Danach können Sie verwenden

vim /root/.bashrc

um PATH zu bearbeiten.

Viel Glück!

2
MrReS

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

Korrigieren Sie dann den PFAD und speichern Sie ihn.

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

Dies sollte das Problem beheben.

1
Kensam

Ich habe das gleiche Problem, nachdem ich den .bash_profile geändert habe. Und ich möchte es wieder ändern, kann es aber jetzt nicht mehr, da ich alle Befehle, insbesondere den nano-Befehl und den vim-Befehl, verloren habe, sodass ich das .bash_profile mit Befehl nicht öffnen kann. Und der .bash_profile ist eine versteckte Datei, die ich mit dem Finder nicht öffnen kann.

Also muss ich einen Weg finden, um die .bash_profile-Datei zu öffnen. Nachdem ich viele Möglichkeiten ausprobiert habe, habe ich festgestellt, dass ich Atom verwenden kann, weil Atom kann Lesen Sie alle Dateien in einem Projektordner, einschließlich der versteckten Dateien. Öffnen Sie also einfach Atom und wählen Sie den Ordner File -> Open, dann <yourusername>, und alle versteckten Dateien werden in der Strukturansicht des Atoms angezeigt, einschließlich des Ordners .bash_profile !! Nachdem ich die letzte Änderung entfernt und das Terminal wieder geöffnet hatte, kamen alle Befehle zurück! :)

1
backslash112

Ich hatte genau das gleiche Problem:

Wenn ich lxterminal einsetze:

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 in tty2 genau den gleichen Befehl eingegeben habe, erhalte 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-Zeilenende, also habe ich die Datei ~/.bashrc geöffnet und die Zeilenenden in Krusader auf Unix-Stil geändert. Und es funktioniert schon !!! :-)

Die DOS-EOLs bereiten auch in Bash-Skripten erhebliche Probleme.

1
xerostomus