«-Bash: ls: команда не найдена»

30

Я установил самое последнее обновление для OS X Lion (10.7). После этого мой терминал не распознает обычные команды. Я набрал lsи получил:

-bash: ls: command not found

Я решил, что попытаюсь добавить usr / bin к моему пути, но я не могу найти .bash_profile, чтобы отредактировать его, так как ввод edit .bash_profileне будет работать. Я не могу настроить Finder на отображение всех файлов, поскольку мой терминал не распознает команды, необходимые для этого.

что мне нужно делать?

LuxuryMode
источник
2
Давайте найдем путь и посмотрим, что получится. export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/binвставьте темную часть (или наберите ОЧЕНЬ ВНИМАТЕЛЬНО) - поскольку две команды отсутствуют - что-то сломало ваш путь. Перед тем, как сделать что-то большое, было бы разумно начать работу с резервной копии.
bmike
1
@bmike спасибо! добавил это в .bash_profile и теперь все работает. должен был открыть .bash_profile вот так: /usr/bin/vi ~/.bash_profileПоставь это как ответ, и я могу принять!
LuxuryMode
связан с superuser.com/questions/573633/bash-profile-not-sourced/… ?
Этьен Лоу-Декари,

Ответы:

42

Так как в двух командах чего-то не хватает, «растоптали» ваш путь.

Перед тем, как сделать что-то большое, было бы разумно начать работу с резервной копии.

Путь по умолчанию в Mac OS X 10.7 (Lion) выглядит примерно так:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Если вы сбрасываете путь, набирая вышеупомянутое в окне оболочки, а затем печатая export PATHего, это должно исправить это одно окно.

Таким образом, вы можете начать там и посмотреть, что еще может быть не так, и исправить это в ваших файлах начальной точки или в другом месте, где это определено.

Эта поломка почти всегда должна быть исправлена ​​в ваших точечных файлах. Для bash отредактируйте и исправьте .bash_profileи / или .bashrcотменив недавнее изменение, просто установив нужную вам переменную $ PATH. Обычная ошибка - назначение нового пути, а не обращение к предыдущему значению переменной в правой части =

bmike
источник
2
Для меня это временное исправление.
Этьен Лоу-Декари,
2
Спасибо! Я немного приподнялся, когда lsне работал после обновления .bash_profileAd
Адриан
Да @Adrian синтаксическая ошибка или пустая переменная PATH могут вызвать сильную тревогу 😅🤭🤬🔥
bmike
Это дало временное исправление. Мне пришлось повторить все шаги, как только я перезапустил CMD
Pawan
Это все еще работает для Mac OS 10.14.3
Стивен Ромеро
11

Это должно решить проблему полностью и навсегда.

во-первых, экспортируйте пути среды с помощью команды ниже в терминале.

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/b‌​in

Теперь у вас есть команды, которые вы хотите. (например, попробуйте ls. Вы увидите, что команда работает). Но это только для текущей сессии. Если вы закроете терминал и откроете новый, у вас будет предыдущая проблема. Чтобы сделать это изменение постоянным, используйте команду ниже,

перейти в домашний каталог

cd ~

откройте файл .bash_profile в nano / vim (здесь я использую nano)

nano .bash_profile

Это откроет нано-редактор. В новой строке вставьте следующее;

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:$PATH

нажмите «control» + «o» для сохранения (WriteOut) и «control» + «x» для выхода из nano.

Все сделано ! Теперь попробуйте команды.

Кавин Ранавелла
источник
3

Это звучит для меня, как будто /etc/profileне запускался при запуске оболочки. Это глобальный файл запуска, отвечающий за инициализацию PATH. Проверьте, /etc/profileсуществует ли и доступен ли для чтения и выполнения с помощью следующей команды:

. /etc/profile

Если его там нет, вам нужно будет восстановить его из резервной копии или другого компьютера с установленным Lion или установить Lion заново. Если он существует, но не является исполняемым, попробуйте использовать Дисковую утилиту для восстановления прав на диске.

Если он существует и является исполняемым (и содержит некоторый код), либо он может не запускаться, когда он должен, либо ваш скрипт запуска может каким-то образом переопределить его. В качестве обходного пути попробуйте поставить его . /etc/profileв начале, ~/.bash_profileчтобы убедиться, что он запущен. Если проблема не устранена, добавьте ее echo $PATHпосле запуска, чтобы проверить, правильно ли инициализирована переменная PATH. Если это так, то что-то в вашем сценарии меняет это.

Вот содержимое по умолчанию /etc/profile:

# System-wide .profile for sh(1)

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
    [ -r /etc/bashrc ] && . /etc/bashrc
fi

path_helperсоздает путь по умолчанию. Вы можете попробовать запустить

unset PATH; /usr/libexec/path_helper -s

чтобы увидеть, что он производит.

В любом случае, если проблема не в ваших сценариях запуска, пожалуйста, свяжитесь со службой поддержки Apple http://www.apple.com/support/contact/ или сообщите об ошибке на https://bugreport.apple.com / чтобы Apple узнала, что есть проблема.

Крис Пейдж
источник
unset PATH; /usr/libexec/path_helper -sпоказывает мне путь, который не содержится в моем /etc/profile. Какие-либо предложения?
Этьен Лоу-Декари,
Запуск . /etc/profileвременно устраняет проблему. Я вставил в верхнюю часть моего ~/.bash_profile, но, похоже, это не работает.
Этьен Лоу-Декари,
1
Проверьте man-страницу bash для получения полного списка файлов запуска и порядка их поиска. Если у вас есть файл для входа, он имеет приоритет над профилем, например. Проверьте другие файлы запуска.
Крис Пейдж
1

Чтобы убедиться, что это действительно проблема с вашим путем, каков результат /bin/ls?

Если это работает, чем вы должны восстановить свой путь /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin, вы можете использовать, например, VIчей путь (на моем Mac) /usr/bin/vi.

Седрик Х.
источник
0

Я думал поделиться ошибкой, которая привела меня к этой ошибке - по крайней мере, в моем случае,

Когда я добавил новый PATHвход ~/.bash_profile, я забыл добавить :$PATHв конце только что добавленный путь.

Я использовал временное исправление (следующую команду в терминале), которое мастера уже указали, чтобы вернуться к bash_profile, так как я не мог использовать команды vi, чтобы открыть его.

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Как только я вошел, я исправил свою ошибку.

(Отрицательные данные имеют значение!)

AshlinJP
источник
-1

Я пытался установить свой путь maven для переменных окружения, когда это произошло. Поэтому я просто переместил свои файлы .profile и .bash_profile в корзину и попробовал снова, и это сработало.

shahid610169
источник
-1

Сброс вашего терминала будет работать. Это сбросит ваши основные конфигурации.

Сбросить свой терминал. От верхней навигации перейдите в Shell >> Сброс.

введите описание изображения здесь

Ашиш Витталь Далви
источник
1
Как сброс Терминала решает проблему с bash?
холме
-2

Похоже, ваша переменная PATH повреждена. Проверьте, случайно ли вы изменяете переменную PATH в своем скрипте, или просто проверьте PATH, сказав echo $ PATH, и вы можете убедиться, что ничего не повреждено.

Науман
источник
-3

Вы можете экспортировать путь следующим образом:

экспорт PATH = $ PATH: / bin: / usr / local / bin

Pravin
источник
3
Добро пожаловать, чтобы спросить другого! На этот вопрос уже есть принятый ответ, и ваш ответ существенно не отличается от принятого ответа. Пожалуйста, посмотрите следующий FAQ о том, как дать хороший ответ: apple.stackexchange.com/help/how-to-answer
fsb