nie znaleziono poleceń w zsh


150

Używam powłoki z ( zsh) zamiast domyślnego basha i stało się coś nie tak, że wszystkie polecenia, które działały, nie są już rozpoznawane:

ls
zsh: command not found: ls

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

Nie wiem, jak zresetować zshlub jak to naprawić. Oto zawartość $PATHzmiennej:

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

Nie mogę otworzyć .bash_profilepliku ani .zshrcpliku, wydaje się, że jedynym rozwiązaniem jest zresetowanie pliku zsh. Jakieś pomysły?

EDYTOWAĆ:

Próbowałem nawet zresetować, zshjak wskazano w tym wątku , ale zawsze otrzymywałem command not foundbłąd:

exec zsh
zsh: command not found: zsh

więc co się dzieje? dlaczego wszystkie polecenia są stracone?

Odpowiedzi:


239

Jest oczywiste, że udało Ci się zepsuć swoją PATHzmienną. (Twój obecny PATHnie zawiera żadnej lokalizacji, w której znajdują się typowe narzędzia).

Próbować:

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

Alternatywnie, aby „zresetować” zsh, podaj pełną ścieżkę do powłoki:

exec /bin/zsh

lub

exec /usr/bin/zsh

17
Po przejściu na Catalinę przełączyłem się na powłokę zsh i zepsuło to moje ścieżki do punktu, w którym nie mogłem uruchomić żadnych aplikacji innych firm, których używam. Musiałem tylko zmodyfikować plik .zshrc i dodać „Export PATH = << lokalizacja moich pojemników >>” i wykonałem exec / bin / zsh i wszystko było dobrze.
Robert Walters

@devnull Wielkie dzięki za tę odpowiedź
Hussain K

18

W pliku konfiguracyjnym ~ / .zsh umieść ścieżkę do pliku ścieżki bash, który zawiera aliasy. W moim przypadku była to linia „source ~ / .bash_profile” wewnątrz ~ / .zsh.


1
Wielkie dzięki, rozwiązał to za mnie. Miałem problem po aktualizacji do Cataliny i przełączeniu na powłokę zsh.
neiya

1
Nie mam ~/.zshpliku. Zamiast tego musiałem to włożyć /etc/zshrc.
Chase Roberts

15
  1. Użyj dobrego edytora tekstu, takiego jak VS Code, i otwórz .zshrcplik (powinien znajdować się w katalogu domowym. Jeśli go nie widzisz, kliknij prawym przyciskiem myszy folder plików podczas otwierania i wybierz opcję `` pokaż ukryte pliki '') .

  2. znajdź, gdzie jest napisane: export PATH=a-bunch-of-paths-separated-by-colons:

  3. wstaw to na końcu wiersza, przed końcowym cudzysłowem: :$HOME/.local/bin

I to powinno działać dla Ciebie.

Możesz najpierw sprawdzić, czy to zadziała, wpisując najpierw w terminalu: export PATH=$HOME/.local/bin:$PATH

Jeśli błąd zniknie po wpisaniu tego w terminalu, a terminal będzie działał normalnie, powyższe rozwiązanie zadziała. Jeśli tak się nie stanie, musisz znaleźć folder, w którym znajduje się błąd odniesienia (rzecz nie została znaleziona) i zamienić powyższą ŚCIEŻKĘ na ŚCIEŻKĘ DO TEGO FOLDERU.


Aha, na tym polega mój błąd, który doprowadził zsh do najwyraźniej „zignorowania” mojego PATHustawienia. Od basha byłem przyzwyczajony do prefiksowania katalogów w moim folderze domowym za pomocą ~. Więc okazuje się, że dla zsh powinienem zamiast tego używać $HOMEzmiennej, jak w twoim przykładzie.
lalilulelost

7

Możesz utworzyć łącze symboliczne w / usr / local / bin /

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

Wielkie dzięki. Miałem problemy i ta odpowiedź uświadomiła mi, że nie używałem $HOMEi nie zapewniałem względnej ścieżki. Korzystanie z pełnej ścieżki i $HOMEnaprawiono mój problem.
tasomaniac

+1 dla wielu prostych przypadków użycia: dodanie linku symbolicznego jest dobrym rozwiązaniem, jeśli chcesz tylko dodać jeden plik wykonywalny. Jeśli chcesz zarządzać wieloma plikami wykonywalnymi w nowym folderze, dodanie do $PATHjest lepsze w tym przypadku.
David Bodow


5

Rozwiązałem problem, otwierając kartę ogólną preferencji terminala i zmieniając polecenie (pełna ścieżka) /bin/bashna domyślne, a następnie edytując ~/.zshrcplik.

wprowadź opis obrazu tutaj

export PATH="all your path inside the quotes"

... bez spacji między PATH="i zapisz plik.

wprowadź opis obrazu tutaj

Po zapisaniu pliku zmień /bin/zshw poleceniu lub wybierz domyślny wprowadź opis obrazu tutaj

... i zrestartuj terminal, a powłoka zsh powinna znowu działać!


4

Jeśli mnie lubisz, będziesz mieć aplikację dwóch terminali, jeden jest domyślnym terminalem z bash jako domyślną powłoką, a drugi iTerm 2 z zsh jako powłoką. Aby mieć zarówno polecenia, jak i zsh w iTerm 2 z bash, musisz wykonać następujące czynności:

W iTerm 2 przejdź do preferencji (lub polecenia,). Następnie przejdź do zakładki profilu i zejdź do polecenia . Jak widać na poniższym obrazku, musisz wybrać opcję polecenia i wkleić ścieżkę powłoki zsh (aby znaleźć ścieżkę, możesz to zrobić which zsh).

wprowadź opis obrazu tutaj

W tym momencie będziesz mieć zsh jako domyślną powłokę TYLKO dla iTerm 2 i będziesz mieć bash jako globalną domyślną powłokę w domyślnej aplikacji terminala mac. Dalej nadal brakuje poleceń z bash w zsh. Aby to zrobić, musisz przejść do swojego bash (gdzie masz działające polecenia) i pobrać zmienną PATH z env (użyj tego polecenia, aby to zrobić:) env | grep PATH.

Gdy już to zrobisz, przejdź do iTerm 2 i wklej ścieżkę do opcji „wyślij tekst przy starcie”.

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

Po prostu ponownie otwórz iTerm 2 i gotowe!


Powodem, dla którego dodaliśmy eksport do opcji „Wyślij tekst na początku” jest to, że z jakiegoś powodu dla mnie ścieżka zawsze resetuje się do tego, co była wcześniej, za każdym razem, gdy ponownie otwieram iTerm 2. Jest to więc dobry sposób na naprawienie tego.
Kamil B

4

Moje rozwiązanie:

Zmień z powrotem na bash:

source .bashrc

Kolejny:

echo $PATH

skopiuj to:

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

powrót do zsh:

source .zsh

otwarte .zshrc:

i wklej:

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

zrestartuj terminal


2

Najlepsze rozwiązanie działa dla mnie na ścieżkę trwałej zmiany

Otwórz Finder-> przejdź do folderu / Users / / usr / local / bin

otwórz .zshrc za pomocą TextEdit

.zshrc jest plikiem ukrytym, więc odkryj go za pomocą polecenia + shift +. naciśnij

usuń zawartość i typ pliku

export PATH = ~ / usr / bin: / bin: / usr / sbin: / sbin: $ PATH

i zapisz

teraz

zsh: polecenie nie zostało znalezione


1

W moim przypadku przez pomyłkę skomentowany kod został odkomentowany w pierwszej linii.

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

Skrót został usunięty. Po dodaniu z powrotem działało dobrze.

Właśnie opublikowałem to tutaj, aby ktoś mógł uznać to za pomocne. Ponieważ to dopiero początek linii i może zostać przez pomyłkę usunięty, tak jak to zrobiłem. I wydaje się, że nie ma rozwiązania po wypróbowaniu kilku sposobów.



0

Jak powiedzieli inni, po prostu ponowne uruchomienie terminala po wprowadzeniu zmian powinno zresetować się i zmiany wprowadzone w pliku ~ / .zshrc. Na przykład po dodaniu funkcji do otwartego studia wizualnego:

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
}

Udało mi się użyć kodu słowa kluczowego, aby otworzyć program z wiersza poleceń.


0

Sposobem na edycję pliku .zshrc bez robienia tego za pomocą iTerm2 lub natywnego terminala w systemie macOS jest użycie terminala w innej aplikacji. Na przykład użyłem terminala jako części VSCode i mogłem znaleźć i edytować plik.


0

jeśli używasz macOS, spróbuj wykonać ten krok

jeśli napiszesz kod do eksportu PATH ~/.bash_profile, nie przegap kroku 1

Krok 1:

  • upewnij się, że .bash_profilejest ładowany, gdy twój terminal jest otwarty, sprawdź swój ~/.bashrclub ~/.zshrc(jeśli używasz zsh), czy jest podobny kod, source ~/.bash_profileczy nie? jeśli nie, możesz dodać ręcznie, dodając source ~/.bash_profiletam kod
  • Upewnij się również, że ten kod znajduje się na twoim .bash_profile>, export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbinjeśli go tam nie ma, dodaj do niego ten kod

2 września:

  • upewnij się, że "Visual Studio Code.app"znajduje się we właściwym miejscu> "/Applications"lub"/Users/$(whoami)/Applications"
  • usuń starą zainstalowaną PATH vs-code rm -rf /usr/local/bin/code
  • otwórz „Visual Studio Code.app”
  • CMD+Shift+P a następnie wybierz "Shell Command: Instal "code" command in PATH"
  • uruchom ponownie komputer Mac i sprawdź, uruchamiając to code -v, powinno działać

-2

Odinstaluj i ponownie zainstaluj zsh działało dla mnie:

sudo yum remove zsh
sudo yum install -y zsh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.