Сбросьте ваш путь прямо сейчас (т.е. перед любым выходом из системы) с помощью:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Он не восстановит ваш полный PATH, но основные утилиты снова будут доступны.
Вот пример того, что происходит:
У вас была переменная PATH (называемая $ PATH при чтении из нее)
Что-то вроде:
$ echo $PATH
/home/durrantm/.rvm/gems/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/durrantm/.rvm/rubies/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/bin:/h
ome/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:
/home/durrantm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/durrantm/.rvm/bin:/home/durrantm/.rvm/bin:/home/durrantm
/.rvm/bin
Вы пытались добавить к нему, но вы случайно использовали
PATH=PATH:other_dir
вместо
PATH=$PATH:other_dir
и в результате ваш путь стал
PATH:other_dir
а потом все утилиты вроде ls и sed не работают
Вы можете исправить минимальный набор, выполнив
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
что особенно полезно, если файлы точек входа в систему портят вашу PATH.
Проверьте ваши файлы .bashrc и / или .bash_profile на наличие любых изменений PATH.
Как говорит Грег, вы также можете просто выйти (или более безопасный вариант, открыть новое окно в случае, если открытие нового окна не работает!), А затем вывести $ PATH из нового окна.
То же самое происходит, когда вы делаете path=
без значений. Это «стирает» ваш текущий путь и вызывает эти проблемы. Сильный текст
Что касается того , почему , когда у вас есть эти проблемы, cd работает, а ls не работает:
cd
это встроенная команда, которая не нуждается в вашем PATH, чтобы найти программу
ls
это программа, и нужно использовать PATH, чтобы найти ее.
Вы можете увидеть это с:
$ builtin ls
-bash: builtin: ls: not a shell builtin
14:47:29 mdurrant C02MH2DQFD58 /Users/mdurrant
$ builtin cd
14:47:31 mdurrant C02MH2DQFD58 /Users/mdurrant
$
Нет ошибки означает, что команда является встроенной
Прежде чем «двигаться дальше» (или выйти) ...
Обязательно протестируйте любые изменения (в частности, изменения в .bashrc, .profile и т. Д., Которые выполняют команды установки PATH), открыв новое окно или выполнив source ~ / .bash_profile для его запуска. Также рекомендуется оставлять окно и редактор (когда вы изменяете файл .bash_profile) открытыми на случай, если ваши изменения не сработают и не позволят вам открыть новые окна для редактирования файла. Хотя вы все равно можете использовать TextEdit или другой простой редактор для изменения файла (исключая, например, командную строку и vi). Будьте осторожны, НЕ перезагружайтесь, если / когда ваша оболочка сломана или вы даже не сможете войти в систему. и это действительно очень плохо (без другого аккаунта, чтобы su
от вас не было). Случилось со мной!
Мое исправление «дополнительная учетная запись» было тогда спасением жизни, хотя и очень рекомендованным для всех (сделайте это сейчас!)