Изменил PATH, теперь я получаю «команда не найдена» для всего

26

Amazon Linux Server, связанный с SSH:

Я попытался изменить PATH для пользователя apache, внеся некоторые изменения в / etc / environment ( PATH=$PATH:/opt/openoffice4/program) и / etc / sysconfig / httpd ( export PATH = ${PATH:$PATH:}/opt/openoffice4/program).

Затем я перезагрузился.

Теперь я ничего не могу сделать, даже ls -lприводит к-bash: ls: command not found

Что я могу сделать, чтобы восстановить контроль?

Ferenjito
источник
4
Можете ли вы запускать команды напрямую? Например /bin/ls?
DavidPostill
да, я могу запустить / bin / ls
Ferenjito
13
Тогда вы сможете запускать /bin/viи исправлять файлы, где вы прервали путь.
DavidPostill

Ответы:

49

Что я могу сделать, чтобы восстановить контроль?

Запустите /bin/viи отмените изменения, которые вы внесли в /etc/environmentи /etc/sysconfig/httpd.

ДэвидПостилл
источник
32

Вы можете установить свой PATHбез редактора. Просто введите это в оболочке:

export PATH=/usr/local/bin:/usr/bin:/bin:$HOME/bin
Том Зыч
источник
1
И убери пробелы! PATH=something, НЕPATH = something
вальтинатор
4
Это должно быть в кавычках, иначе это $HOMEможет быть предметом глобализации и расщепления слов. IOW, он сломается, если в нем $HOMEесть пробел (правдоподобно) или любые символы глобуса (менее вероятно).
Кевин
@Kevin Я попробовал это, и места и шары были просто скопированы. (Письмо export PATH=/path to home/binне работает, конечно.)
Нил
2
@Kevin Вот как он ведет себя в строго соответствующих реализациях, но, по крайней мере, bash предоставляет exportпользовательские правила синтаксиса, которые не имеют такой проблемы. (Пользовательские правила синтаксиса уже требовались по другим причинам, например, чтобы разрешить export array=(1 2 3).)
hvd
-1

Может быть, это поможет:

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

Команда 'export' не используется из / usr / bin, поэтому она все еще работает!

Феликс Вебер
источник
1
Этот ответ уже был предложен.
ксеноид