Zmieniłem ŚCIEŻKĘ, teraz otrzymuję „polecenie nie znaleziono” dla wszystkiego

26

Serwer Amazon Linux połączony z SSH:

Próbowałem zmienić ŚCIEŻKĘ dla użytkownika apache, wprowadzając pewne zmiany w / etc / environment ( PATH=$PATH:/opt/openoffice4/program) i / etc / sysconfig / httpd ( export PATH = ${PATH:$PATH:}/opt/openoffice4/program).

Potem zrestartowałem się.

Teraz nie mogę nic zrobić, nawet ls -lprowadzi do-bash: ls: command not found

Co mogę zrobić, aby odzyskać kontrolę?

Ferenjito
źródło
4
Czy potrafisz uruchamiać polecenia bezpośrednio? Na przykład /bin/ls?
DavidPostill
tak, mogę uruchomić / bin / ls
Ferenjito,
13
Powinieneś być w stanie uruchomić /bin/vii naprawić pliki, w których złamałeś ścieżkę.
DavidPostill

Odpowiedzi:

49

Co mogę zrobić, aby odzyskać kontrolę?

Uruchom /bin/vii przywróć zmiany wprowadzone w /etc/environmenti /etc/sysconfig/httpd.

DavidPostill
źródło
32

Możesz ustawić swój PATHbez edytora. Po prostu wpisz to w powłoce:

export PATH=/usr/local/bin:/usr/bin:/bin:$HOME/bin
Tom Zych
źródło
1
I usuń spacje! PATH=something, NOTPATH = something
waltinator,
4
Należy to zacytować, w przeciwnym razie $HOMEbędzie podlegać globowaniu i dzieleniu słów. IOW, pęknie, jeśli będzie $HOMEw nim spacja (prawdopodobne) lub dowolne znaki globalne (mniej prawdopodobne).
Kevin
@Kevin Próbowałem, a spacje i globusy zostały właśnie skopiowane. (Pisanie export PATH=/path to home/binoczywiście nie działa.)
Neil
2
@Kevin Tak zachowuje się w ściśle zgodnych implementacjach, ale przynajmniej bash daje exportniestandardowe reguły składniowe, które nie mają tego problemu. (Niestandardowe reguły składni były już wymagane z innych powodów, np export array=(1 2 3).
Zezwalać
-1

Może to pomogłoby:

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

Polecenie „eksportuj” nie jest używane z / usr / bin, dlatego nadal działa!

Felix Weber
źródło
1
Ta odpowiedź została już zasugerowana.
ksenoid