команды не найдены на zsh


140

Я использую z Shell ( zsh) вместо bash по умолчанию, и происходит что-то не так, так что все команды, которые раньше работали, больше не распознаются:

ls
zsh: command not found: ls

open -e .zshrc
zsh: correct 'open' to '_open' [nyae]? 

Я не знаю, как выполнить сброс zshили как это исправить. Вот содержимое $PATHпеременной:

echo $PATH
/Users/Malloc/bin/Sencha/Cmd/3.1.2.342:/usr/local/bin/mate

Я не могу открыть .bash_profileни .zshrcфайл, ни файл, кажется, единственное решение - сбросить zsh. Любые идеи?

РЕДАКТИРОВАТЬ:

Я даже пытался выполнить сброс, zshкак указано в этой ветке , но всегда получал command not foundошибку:

exec zsh
zsh: command not found: zsh

так что же происходит? почему все команды потеряны?

Ответы:


221

Очевидно, что вам удалось испортить свою PATHпеременную. (В вашем текущем месте PATHнет мест, где расположены общие коммунальные службы.)

Пытаться:

PATH=/bin:/usr/bin:/usr/local/bin:${PATH}
export PATH

Как вариант, для «сброса» zsh укажите полный путь к оболочке:

exec /bin/zsh

или

exec /usr/bin/zsh

17
Когда я обновился до Catalina, я переключился на оболочку zsh, и мои пути испортились до такой степени, что я не мог запускать какие-либо сторонние приложения, которые использую. Мне просто нужно было изменить файл .zshrc и добавить «export PATH = << расположение моих ящиков >>» и выполнить exec / bin / zsh, и все было хорошо.
Роберт Уолтерс

18

В вашем конфигурационном файле ~ / .zsh укажите путь к вашему файлу пути bash, который содержит ваши псевдонимы. В моем случае это было включение строки «source ~ / .bash_profile» в ~ / .zsh.


1
Большое спасибо, он решил это за меня. У меня возникла проблема после обновления до Catalina и перехода на оболочку zsh.
neiya

1
У меня нет ~/.zshфайла. Вместо этого мне пришлось его вставить /etc/zshrc.
Чейз Робертс,

14
  1. Используйте хороший текстовый редактор, например VS Code, и откройте .zshrcфайл (он должен находиться в вашем домашнем каталоге. Если вы его не видите, не забудьте щелкнуть правой кнопкой мыши в папке с файлом при открытии и выбрать опцию «показать скрытые файлы») ,

  2. найдите, где говорится: export PATH=a-bunch-of-paths-separated-by-colons:

  3. вставьте это в конец строки, перед конечной цитатой: :$HOME/.local/bin

И это должно сработать для вас.

Сначала вы можете проверить, будет ли это работать, набрав это в своем терминале: export PATH=$HOME/.local/bin:$PATH

Если ошибка исчезнет после того, как вы введете это в терминал, и ваш терминал будет нормально работать, вышеуказанное решение будет работать. Если это не так, вам нужно будет найти папку, в которой находится ваша справочная ошибка (вещь не найдена), и заменить PATH выше на PATH-TO-THAT-FOLDER.


Ага, в этом моя ошибка, которая привела к тому, что zsh явно «проигнорировал» мои PATHнастройки. Из bash я привык к префиксу каталогов внутри моей домашней папки с помощью ~. Итак, оказывается, что для zsh я должен вместо этого использовать $HOMEпеременную, как в вашем примере.
lalilulelost

7

Вы можете создать символическую ссылку в / usr / local / bin /

sudo ln -s $HOME/.composer/vendor/bin/homestead /usr/local/bin/homestead

Большое спасибо. У меня были проблемы, и этот ответ заставил меня понять, что я не использовал $HOMEи не указывал относительный путь. Использование полного пути с $HOMEустранением моей проблемы.
tasomaniac

+1 для многих простых случаев использования: добавление символической ссылки - лучший способ, если вы просто хотите добавить один исполняемый файл. Если вы хотите управлять несколькими исполняемыми файлами в новой папке, то $PATHв этом случае лучше добавить их .
Дэвид Бодоу,


4

Я исправил проблему, открыв общую вкладку настроек терминала и изменив команду (полный путь) /bin/bashна значение по умолчанию, а затем отредактировав ~/.zshrcфайл.

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

export PATH="all your path inside the quotes"

... без пробелов между PATH="и сохранить файл.

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

После сохранения файла измените /bin/zshв своей команде или выберите по умолчанию введите описание изображения здесь

... и перезапустите терминал, и ваша оболочка zsh снова заработает!


4

Если я вам нравлюсь, у вас будет два приложения для терминалов, одно - это терминал по умолчанию с bash в качестве оболочки по умолчанию, а другое - iTerm 2 с zsh в качестве оболочки. Чтобы обе команды и zsh были в iTerm 2 из bash, вам необходимо сделать следующее:

На iTerm 2 перейдите в настройки (или команду,). Затем перейдите на вкладку профиля и перейдите к команде . Как вы можете видеть на рисунке ниже, вам нужно выбрать параметр команды и вставить путь оболочки zsh (чтобы найти путь, вы можете это сделать which zsh).

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

На этом этапе у вас будет zsh в качестве оболочки по умолчанию ТОЛЬКО для iTerm 2, и у вас будет bash в качестве глобальной оболочки по умолчанию для терминального приложения Mac по умолчанию. Далее, нам по-прежнему не хватает команд из bash в zsh. Итак, чтобы сделать это, вам нужно перейти на ваш bash (где у вас работают ваши команды) и получить переменную PATH из env (используйте эту команду для этого:) env | grep PATH.

Как только у вас есть это, перейдите в свой iTerm 2 и вставьте свой путь в опцию «отправить текст при запуске».

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin && clear

Просто снова откройте iTerm 2, и все готово!


Причина, по которой мы добавили экспорт в «Отправлять текст при запуске», заключается в том, что по какой-то мне причине путь всегда сбрасывается до того, что было раньше, когда я повторно открывал iTerm 2. Так что это хороший способ исправить это.
Kamil B

4

Мое решение:

Вернуться на bash:

source .bashrc

следующий:

echo $PATH

скопируйте это:

/home/frank/.asdf/shims:/home/frank/....

назад к zsh:

source .zsh

открыто .zshrc :

и вставьте:

 export PATH=/home/frank/.asdf/shims:/home/frank/....

перезапустить терминал


2

Лучшее решение для меня для постоянного изменения пути

Откройте Finder-> перейдите в папку / Users / / usr / local / bin

открыть .zshrc с помощью TextEdit

.zshrc - это скрытый файл, поэтому отобразите его командой + shift +. Нажмите

удалить содержимое файла и тип

экспорт ПУТЬ = ~ / usr / bin: / bin: / usr / sbin: / sbin: $ PATH

и сохранить

сейчас

zsh: команда не найдена Gone


1

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

# If you come from bash you might have to change your $PATH.

Хеш был удален. После добавления обратно работал нормально.

Я только что разместил это здесь, чтобы кто-то нашел это полезным. Потому что это только начало строки и может быть удалено по ошибке, как это сделал я. И, похоже, после нескольких попыток решения нет.



0

Как говорили другие, простой перезапуск терминала после того, как вы внесли изменения, должен сбросить и изменения, внесенные вами в файл ~ / .zshrc. Например, после добавления функции для открытия визуальной студии:

function code {  
    if [[ $# = 0 ]]
    then
        open -a "Visual Studio Code"
    else
        local argPath="$1"
        [[ $1 = /* ]] && argPath="$1" || argPath="$PWD/${1#./}"
        open -a "Visual Studio Code" "$argPath"
    fi
}

Я смог использовать код ключевого слова, чтобы открыть программу из командной строки.


0

Один из способов отредактировать файл .zshrc без использования iTerm2 или собственного терминала в macOS - использовать терминал в другом приложении. Например, я использовал терминал как часть VSCode и смог найти и отредактировать файл.


-1

Удаление и переустановка zsh у меня сработали:

sudo yum remove zsh
sudo yum install -y zsh
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.