команди не знайдені на zsh


138

Я використовую 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

так що відбувається? чому всі команди втрачені?

Відповіді:


218

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

Спробуйте:

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

Крім того, для "скидання" zsh вкажіть повний шлях до оболонки:

exec /bin/zsh

або

exec /usr/bin/zsh

17
Коли я перейшов на Каталіну, я перейшов до оболонки zsh, і це переплутало мої шляхи до того моменту, коли я не міг виконувати будь-які застосовані сторонніми додатками. Мені просто довелося змінити файл .zshrc і додати "експортувати PATH = << розташування моїх бін >>" і зробив exec / bin / zsh і все було добре.
Роберт Уолтерс

18

У конфігураційний файл ~ / .zsh включіть шлях до файлу шляху bash, який містить ваші псевдоніми. У моєму випадку він включав рядок "source ~ / .bash_profile" всередині ~ / .zsh.


1
Велике спасибі, це вирішило це для мене. У мене виникли проблеми після оновлення до Каталіни, і я перейшов на zsh shell.
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

Якщо помилка зникає після того, як ви введете це в термінал і ваш термінал нормально функціонує, вищевказане рішення спрацює. Якщо це не так, вам доведеться знайти папку, в якій знаходиться ваша посилальна помилка (річ не знайдена), і замінити ПАТУ вище на ПАТУТОК ДО ТОТИ.


Ага, в цьому криється моя помилка, яка призвела до того, що zsh явно "проігнорував" мою PATHнастройку. З bash я звик до префіксації каталогів у своїй домашній папці ~. Отже, виходить, що для zsh я повинен замість цього використовувати $HOMEзмінну, як у вашому прикладі.
lalilulelost

7

Ви можете створити симпосилання в / usr / local / bin /

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

Дуже дякую. У мене виникли проблеми, і ця відповідь дала мені зрозуміти, що я не використовую $HOMEта надаю відносний шлях. Використання повного шляху з $HOMEвиправленою моєю проблемою.
тасоман

+1 для багатьох простих випадків використання: Додавання символьної посилання - це шлях, якщо ви просто хочете додати один виконуваний файл. Якщо ви хочете керувати кількома виконуваними файлами в новій папці, тоді $PATHв цьому випадку краще додати додавання до .
Девід Бодов


4

Я вирішив проблему, відкривши вкладку загальних параметрів терміналу та змінивши команду (повний шлях) /bin/bashна типову, а потім відредагувавши ~/.zshrcфайл.

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

export PATH="all your path inside the quotes"

... без пробілів між PATH="і зберегти файл.

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

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

... і перезапустіть термінал, і ви повинні знову працювати з оболонкою zsh!


4

Якщо ви мені подобаєтеся, у вас буде два термінали, один - термінал за замовчуванням з bash як оболонкою за замовчуванням, а інший iTerm 2 з zsh як оболонкою. Щоб у команді iTerm 2 з bash були і команди, і zsh, вам потрібно зробити наступне:

У iTerm 2 перейдіть до налаштувань (або команди,). Потім перейдіть довкладку профілю і перейдіть до команди . Як ви бачите на малюнку нижче, вам потрібно вибрати командний варіант і вставити шлях до zsh shell (щоб знайти шлях, ви можете це зробити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. Отже, це приємний спосіб виправити це.
Каміль В

3

Моє рішення:

Перейти до bash:

source .bashrc

наступний:

echo $PATH

скопіюйте це:

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

повернутися до zsh:

source .zsh

відчинено .zshrc :

і вставте:

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

термінал перезапуску


1

У моєму випадку помилково коментований код був коментований на першому рядку.

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

Хеш видалено. Після додавання його спрацювало чудово.

Я щойно розмістив це тут, щоб хтось міг вважати це корисним. Тому що це лише початок рядка і може бути видалено помилково, як я це зробив. Здається, що після спроб декількох способів рішення немає.


1

Найкраще рішення для мене для постійного шляху змін

Відкрийте Finder-> перейдіть до папки / Users / / usr / local / bin

відкрити .zshrc за допомогою TextEdit

.zshrc - це прихований файл, тому розкрийте його командою + shift +. натиснути

видалити вміст і тип файлу

експортувати PATH = ~ / usr / bin: / bin: / usr / sbin: / sbin: $ PATH

і зберегти

зараз

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



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.