PATH geändert, jetzt bekomme ich für alles "Befehl nicht gefunden"

26

Amazon Linux Server, verbunden mit SSH:

Ich habe versucht, den PATH für den Apache-Benutzer zu ändern, indem ich einige Änderungen in / etc / environment ( PATH=$PATH:/opt/openoffice4/program) und / etc / sysconfig / httpd ( export PATH = ${PATH:$PATH:}/opt/openoffice4/program) vorgenommen habe.

Dann habe ich neu gestartet.

Jetzt kann ich nichts machen, ls -lführt auch dazu-bash: ls: command not found

Was kann ich tun, um die Kontrolle wiederzugewinnen?

Ferenjito
quelle
4
Können Sie Befehle direkt ausführen? Zum Beispiel /bin/ls?
DavidPostill
Ja, ich kann / bin / ls
ausführen
13
Dann sollten Sie in der Lage sein, /bin/vidie Dateien auszuführen und zu reparieren, bei denen Sie den Pfad gebrochen haben.
DavidPostill

Antworten:

49

Was kann ich tun, um die Kontrolle wiederzugewinnen?

Führen /bin/viSie die an /etc/environmentund vorgenommenen Änderungen aus und setzen Sie sie zurück /etc/sysconfig/httpd.

DavidPostill
quelle
32

Sie können Ihre PATHohne Editor einstellen . Geben Sie dies einfach in die Shell ein:

export PATH=/usr/local/bin:/usr/bin:/bin:$HOME/bin
Tom Zych
quelle
1
Und entfernen Sie die Leerzeichen! PATH=somethingNICHTPATH = something
Waltinator
4
Das sollte zitiert werden, sonst $HOMEwird es zu Globbing und Wortspaltung kommen. IOW, es wird kaputt gehen, wenn $HOMEein Leerzeichen (plausibel) oder ein Glob-Zeichen (weniger wahrscheinlich) enthalten ist.
Kevin
@ Kevin Ich habe es versucht und die Leerzeichen und Globs wurden nur kopiert. (Das Schreiben export PATH=/path to home/binfunktioniert natürlich nicht.)
Neil
2
@ Kevin So verhält es sich bei streng konformen Implementierungen, aber zumindest gibt bash exportbenutzerdefinierte Syntaxregeln an, bei denen dieses Problem nicht auftritt . (Benutzerdefinierte Syntaxregeln waren bereits aus anderen Gründen erforderlich, z export array=(1 2 3). B. um dies zuzulassen .)
hvd
-1

Vielleicht würde das helfen:

export PATH=/usr/local/bin:/usr/bin:/bin:$HOME/bin

Der Befehl 'export' wird in / usr / bin nicht verwendet, deshalb funktioniert er immer noch!

Felix Weber
quelle
1
Diese Antwort wurde bereits vorgeschlagen.
Magnet