comandi non trovati su zsh


138

Sto usando z Shell ( zsh) invece della bash predefinita e succede qualcosa di sbagliato in modo che tutti i comandi che funzionavano non vengano più riconosciuti:

ls
zsh: command not found: ls

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

Non so come ripristinare zsho come risolvere questo. Ecco il contenuto della $PATHvariabile:

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

Non riesco ad aprire il .bash_profilefile né il .zshrcfile, sembra che l'unica soluzione sia ripristinare il zsh. Qualche idea?

MODIFICARE:

Ho anche provato a ripristinare zshcome indicato in questo thread , ma ho sempre ricevuto un command not founderrore:

exec zsh
zsh: command not found: zsh

quindi cosa sta succedendo? perché tutti i comandi vengono persi?

Risposte:


218

È evidente che sei riuscito a rovinare la tua PATHvariabile. (La tua attuale PATHnon contiene alcuna posizione in cui si trovano le utilità comuni.)

Provare:

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

In alternativa, per "resettare" zsh, specifica il percorso completo della shell:

exec /bin/zsh

o

exec /usr/bin/zsh

17
Quando ho eseguito l'aggiornamento a Catalina sono passato alla shell zsh e questo ha incasinato i miei percorsi fino al punto in cui non potevo eseguire alcuna app di terze parti che utilizzo. Ho dovuto solo modificare il file .zshrc e aggiungere "export PATH = << location of my bins >>" e ho eseguito exec / bin / zsh e tutto è andato bene.
Robert Walters,

18

Nel tuo file di configurazione ~ / .zsh includi il percorso del tuo file di percorso bash che contiene i tuoi alias. Nel mio caso includeva la riga "source ~ / .bash_profile" all'interno di ~ / .zsh.


1
Grazie mille, mi ha risolto. Ho avuto il problema dopo l'aggiornamento a Catalina e sono passato alla shell zsh.
Neiya,

1
Non ho un ~/.zshfile. Invece ho dovuto inserirlo /etc/zshrc.
Chase Roberts,

14
  1. Usa un buon editor di testo come VS Code e apri il tuo .zshrcfile (dovrebbe essere nella tua home directory. Se non lo vedi, assicurati di fare clic con il pulsante destro del mouse nella cartella dei file quando apri e scegli l'opzione per "mostrare i file nascosti") .

  2. trova dove afferma: export PATH=a-bunch-of-paths-separated-by-colons:

  3. inseriscilo alla fine della riga, prima della virgoletta finale: :$HOME/.local/bin

E dovrebbe funzionare per te.

Puoi verificare se questo funzionerà prima digitando prima questo nel tuo terminale: export PATH=$HOME/.local/bin:$PATH

Se l'errore scompare dopo averlo digitato nel terminale e il terminale funziona normalmente, la soluzione sopra funzionerà. In caso contrario, dovrai trovare la cartella in cui si trova l'errore di riferimento (la cosa non è stata trovata) e sostituire il PERCORSO sopra con il PERCORSO A QUELLA CARTELLA.


Ah, qui sta il mio errore che ha portato apparentemente zsh a "ignorare" la mia PATHimpostazione. Da bash, ero abituato a anteporre le directory all'interno della mia cartella home con ~. Quindi risulta che per zsh dovrei invece usare la $HOMEvariabile, come nel tuo esempio.
lalilulelost,

7

Puoi creare un link simbolico in / usr / local / bin /

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

Molte grazie. Avevo problemi e questa risposta mi ha fatto capire che non stavo usando $HOMEe fornendo un percorso relativo. Utilizzando il percorso completo con $HOMErisolto il mio problema.
tasomaniaco

+1 per molti semplici casi d'uso: l'aggiunta di un collegamento simbolico è la strada da percorrere se stai solo cercando di aggiungere un eseguibile. Se stai cercando di gestire più eseguibili in una nuova cartella, aggiungere a $PATHè meglio in quel caso d'uso.
David Bodow,

4

Per me il semplice riavvio del mio terminale sembrava risolvere il problema.


4

Ho risolto il problema aprendo la scheda generale delle preferenze del terminale e cambiando il comando (percorso completo) /bin/bashin predefinito e quindi modificando il ~/.zshrcfile.

inserisci qui la descrizione dell'immagine

export PATH="all your path inside the quotes"

... senza spazi bianchi tra il PATH="e salvare il file.

inserisci qui la descrizione dell'immagine

Dopo aver salvato il file, modificare il /bin/zsh comando o seleziona l'impostazione predefinita inserisci qui la descrizione dell'immagine

... e riavvia il terminale e dovresti riavere la tua shell zsh!


4

Se ti piaccio, avrai due terminali app, uno è il terminale predefinito con bash come shell predefinita e un altro iTerm 2 con zsh come shell. Per avere sia i comandi sia zsh in iTerm 2 da bash, devi fare quanto segue:

Su iTerm 2, vai alle preferenze (o comando,). Quindi vai alla scheda del profilo e scendi per comandare . Come puoi vedere nell'immagine qui sotto, devi selezionare l' opzione di comando e incollare il percorso della shell zsh (per trovare il percorso, puoi farlo which zsh).

inserisci qui la descrizione dell'immagine

A questo punto avrai zsh come shell predefinita SOLO per iTerm 2 e avrai bash come shell predefinita globale sull'app terminale mac predefinita. Successivamente, ci mancano ancora i comandi di bash in zsh. Quindi, per fare questo, devi andare su bash (dove hai i tuoi comandi funzionanti) e ottenere la variabile PATH da env (usa questo comando per farlo:env | grep PATH .

Una volta che hai quello, vai su iTerm 2 e incolla il tuo percorso sull'opzione "invia testo all'avvio".

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

Riapri semplicemente iTerm 2 e abbiamo finito!


Il motivo per cui abbiamo aggiunto l'esportazione a "Invia testo all'inizio" è che per qualcuno motivo per me, il percorso ripristinava sempre quello che era prima ogni volta che ho riaperto iTerm 2. Quindi questo è un bel modo di risolverlo.
Kamil B,

3

La mia soluzione:

Torna a bash:

source .bashrc

Il prossimo:

echo $PATH

copia questo:

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

torna a zsh:

source .zsh

aperto .zshrc:

e incolla:

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

riavvia il terminale


1

Nel mio caso, è stato per errore che il codice commentato è stato decommentato nella prima riga.

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

L'hash è stato rimosso. Dopo averlo aggiunto di nuovo ha funzionato bene.

Ho appena pubblicato questo qui in modo che qualcuno possa trovarlo utile. Perché è solo l'inizio della riga e potrebbe essere cancellato per errore come avevo fatto io. E sembra che non ci sia soluzione dopo aver provato diversi modi.


1

La migliore soluzione funziona per me per il percorso di cambiamento permanente

Apri Finder-> vai alla cartella / Users / / usr / local / bin

apri .zshrc con TextEdit

.zshrc è un file nascosto, quindi scoprilo con il comando + maiusc +. stampa

elimina il contenuto e digita il file

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

e salva

adesso

zsh: comando non trovato Andato



0

Come altri hanno già detto, il semplice riavvio del terminale dopo aver apportato le modifiche dovrebbe essere ripristinato e le modifiche apportate al file ~ / .zshrc. Ad esempio dopo aver aggiunto la funzione per aprire Visual Studio:

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
}

Sono stato in grado di utilizzare il codice della parola chiave per aprire il programma dalla riga di comando.


0

Un modo per modificare il file .zshrc senza farlo tramite iTerm2 o Terminale nativo su macOS è usare un terminale in un'altra applicazione. Ad esempio, ho usato il terminale come parte di VSCode e sono stato in grado di trovare e modificare il file.


-1

Disinstalla e reinstalla zsh ha funzionato per me:

sudo yum remove zsh
sudo yum install -y zsh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.