commandes introuvables sur zsh

138

J'utilise le z Shell ( zsh) au lieu du bash par défaut, et quelque chose ne va pas, de sorte que toutes les commandes qui fonctionnaient auparavant ne sont plus reconnues:

ls
zsh: command not found: ls

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

Je ne sais pas comment réinitialiser zshou comment résoudre ce problème. Voici le contenu de la $PATHvariable:

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

Je ne peux pas ouvrir le .bash_profilefichier ni le .zshrcfichier, il semble que la seule solution soit de réinitialiser le fichier zsh. Des idées?

ÉDITER:

J'ai même essayé de réinitialiser zshcomme indiqué dans ce fil , mais j'ai toujours eu une command not founderreur:

exec zsh
zsh: command not found: zsh

alors que se passe-t-il? pourquoi toutes les commandes sont perdues?

Malloc
la source

Réponses:

218

Il est évident que vous avez réussi à gâcher votre PATHvariable. (Votre courant PATHne contient aucun emplacement où se trouvent les utilitaires courants.)

Essayer:

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

Sinon, pour "réinitialiser" zsh, spécifiez le chemin complet vers le shell:

exec /bin/zsh

ou

exec /usr/bin/zsh
devnull
la source
17
Lorsque je suis passé à Catalina, je suis passé au shell zsh et cela a gâché mes chemins au point que je ne pouvais exécuter aucune application tierce que j'utilise. Je devais juste modifier le fichier .zshrc et ajouter "export PATH = << emplacement de mes bacs >>" et faire l'exec / bin / zsh et tout était bon.
Robert Walters
18

Dans votre fichier de configuration ~ / .zsh, incluez le chemin vers votre fichier de chemin bash qui contient vos alias. Dans mon cas, il incluait la ligne "source ~ / .bash_profile" à l'intérieur de ~ / .zsh.

dsteplight
la source
1
Merci beaucoup, cela a résolu le problème pour moi. J'ai eu le problème après la mise à niveau vers Catalina et je suis passé au shell zsh.
neiya
1
Je n'ai pas de ~/.zshdossier. Au lieu de cela, j'ai dû le mettre /etc/zshrc.
Chase Roberts le
14
  1. Utilisez un bon éditeur de texte comme VS Code et ouvrez votre .zshrcfichier (devrait être dans votre répertoire personnel. Si vous ne le voyez pas, assurez-vous de faire un clic droit dans le dossier du fichier lors de l'ouverture et choisissez l'option `` Afficher les fichiers cachés '') .

  2. trouver où il dit: export PATH=a-bunch-of-paths-separated-by-colons:

  3. insérez ceci à la fin de la ligne, avant le guillemet de fin: :$HOME/.local/bin

Et cela devrait fonctionner pour vous.

Vous pouvez tester si cela fonctionnera en premier en tapant ceci dans votre terminal: export PATH=$HOME/.local/bin:$PATH

Si l'erreur disparaît après que vous l'avez tapé dans le terminal et que votre terminal fonctionne normalement, la solution ci-dessus fonctionnera. Si ce n'est pas le cas, vous devrez trouver le dossier où se trouve votre erreur de référence (la chose introuvable) et remplacer le PATH ci-dessus par le PATH-TO-THAT-FOLDER.

Jérémie McCurdy
la source
Aha, c'est là que réside mon erreur qui a conduit zsh à «ignorer» apparemment mon PATHréglage. De bash, j'avais l'habitude de préfixer les répertoires dans mon dossier personnel avec ~. Il s'avère donc que pour zsh, je devrais plutôt utiliser la $HOMEvariable, comme dans votre exemple.
lalilulelost le
7

Vous pouvez créer un lien symbolique dans / usr / local / bin /

sudo ln -s $HOME/.composer/vendor/bin/homestead /usr/local/bin/homestead
Adel Kihal
la source
Merci beaucoup. J'avais des problèmes et cette réponse m'a fait réaliser que je n'utilisais pas $HOMEet ne fournissais pas de chemin relatif. L'utilisation du chemin complet avec $HOMEcorrigé mon problème.
tasomaniac
+1 pour de nombreux cas d'utilisation simples: Ajouter un lien symbolique est la voie à suivre si vous cherchez simplement à ajouter un exécutable. Si vous cherchez à gérer plusieurs exécutables dans un nouveau dossier, l'ajout $PATHest préférable dans ce cas d'utilisation.
David Bodow le
4

Pour moi, le simple fait de redémarrer mon terminal semblait résoudre le problème.

Darion Miller
la source
4

J'ai résolu le problème en ouvrant l'onglet général des préférences du terminal et en modifiant la commande (chemin complet) /bin/bashpar défaut, puis en modifiant le ~/.zshrcfichier.

entrez la description de l'image ici

export PATH="all your path inside the quotes"

... sans espace entre le PATH="et enregistrez le fichier.

entrez la description de l'image ici

Après avoir enregistré le fichier, modifiez le /bin/zshdans votre commande ou sélectionnez par défaut entrez la description de l'image ici

... et redémarrez le terminal et votre shell zsh devrait fonctionner à nouveau!

Vish
la source
4

Si vous m'aimez, vous aurez deux applications de terminaux, l'un est le terminal par défaut avec bash comme shell par défaut et un autre iTerm 2 avec zsh comme shell. Pour avoir à la fois les commandes et zsh dans iTerm 2 à partir de bash, vous devez effectuer les opérations suivantes:

Sur iTerm 2, allez dans les préférences (ou la commande,). Ensuite, allez dans l' onglet profil et descendez à la commande . Comme vous pouvez le voir sur l'image ci-dessous, vous devez sélectionner l' option de commande et coller le chemin du shell zsh (pour trouver le chemin, vous pouvez le faire which zsh).

entrez la description de l'image ici

À ce stade, vous aurez le zsh comme shell par défaut UNIQUEMENT pour iTerm 2 et vous aurez bash comme shell par défaut global sur l'application de terminal mac par défaut. Ensuite, il nous manque toujours les commandes de bash dans zsh. Donc, pour ce faire, vous devez aller sur votre bash (où vos commandes fonctionnent) et obtenir la variable PATH depuis env (utilisez cette commande pour le faire:) env | grep PATH.

Une fois que vous avez cela, allez sur votre iTerm 2 et collez votre chemin sur l'option "envoyer du texte au démarrage".

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

Rouvrez simplement iTerm 2 et nous avons terminé!

Kamil B
la source
La raison pour laquelle nous avons ajouté l'exportation à "Envoyer le texte au début" est que pour une raison quelconque pour moi, le chemin est toujours réinitialisé à ce qu'il était avant chaque fois que j'ai rouvert iTerm 2. C'est donc une bonne façon de le réparer.
Kamil B
3

Ma solution:

Revenir à bash:

source .bashrc

suivant:

echo $PATH

copiez ceci:

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

retour au zsh:

source .zsh

ouvert .zshrc:

et collez:

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

redémarrer le terminal

Leandro Castro
la source
1

Dans mon cas, c'est par erreur que le code commenté n'a pas été commenté à la toute première ligne.

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

Le hachage a été supprimé. Après l'avoir ajouté, il a bien fonctionné.

Je viens de publier ceci ici pour que quelqu'un puisse trouver cela utile. Parce que c'est juste le début de la ligne et pourrait être supprimé par erreur comme je l'avais fait. Et il semble qu'il n'y ait pas de solution après avoir essayé plusieurs façons.

Bhojendra Rauniyar
la source
1

La meilleure solution fonctionne pour moi pour un chemin de changement permanent

Ouvrez Finder-> allez dans le dossier / Users / / usr / local / bin

ouvrir .zshrc avec TextEdit

.zshrc est un fichier caché donc affichez-le par commande + shift +. presse

supprimer le contenu et le type de fichier

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

Et enregistrer

maintenant

zsh: commande introuvable Finie

9to5ios
la source
0

Le redémarrage du terminal a également fait l'affaire pour moi.

Sergio Acosta
la source
0

Comme d'autres l'ont dit, il suffit de redémarrer le terminal après avoir effectué les modifications et les modifications que vous avez apportées à votre fichier ~ / .zshrc. Par exemple, après avoir ajouté une fonction pour ouvrir 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
}

J'ai pu utiliser le code du mot-clé pour ouvrir le programme à partir de la ligne de commande.

Nathan Minarik
la source
0

Un moyen de modifier le fichier .zshrc sans le faire via iTerm2 ou un terminal natif sur macOS consiste à utiliser un terminal dans une autre application. Par exemple, j'ai utilisé le terminal dans le cadre de VSCode et j'ai pu trouver et modifier le fichier.

Rambou19
la source
-1

Désinstaller et réinstaller zsh a fonctionné pour moi:

sudo yum remove zsh
sudo yum install -y zsh
Geek
la source