web-dev-qa-db-fra.com

commandes non trouvées sur zsh

J'utilise le shell z (zsh) à la place du bash par défaut, et il se produit un problème qui fait 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 zsh ni comment résoudre ce problème. Voici le contenu de la variable $PATH:

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

Je ne peux pas ouvrir le fichier .bash_profile ni le fichier .zshrc. Il semble que la seule solution consiste à réinitialiser le zsh. Des idées? 

MODIFIER:

J'ai même essayé de réinitialiser zsh comme indiqué dans ce fil , mais toujours avec l'erreur command not found:

exec zsh
zsh: command not found: zsh

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

60
Malloc

Il est évident que vous avez réussi à modifier votre variable PATH. (Votre PATH actuelle ne contient aucun emplacement où se trouvent des utilitaires communs.)

Essayer:

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

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

exec /bin/zsh

ou

exec /usr/bin/zsh
106
devnull
  1. Utilisez un bon éditeur de texte tel que Sublime text et ouvrez votre fichier .zshrc (il devrait se trouver dans votre répertoire personnel. Si vous ne le voyez pas, veillez à cliquer avec le bouton droit de la souris sur le dossier de fichiers lors de l'ouverture et à choisir l'option "Afficher les fichiers cachés" ).

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

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

Et ça devrait marcher pour vous.

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

Si l'erreur disparaît après que vous l'ayez entrée 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 dans lequel se trouve votre erreur de référence (l'élément introuvable) et remplacer le PATH ci-dessus par le chemin PATH-TO-THAT-FOLDER.

8
Jeremiah McCurdy

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

Sudo ln -s $HOME/.composer/vendor/bin/Homestead /usr/local/bin/Homestead
5
Adel Kihal

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

4
dsteplight

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

3
Darion Miller

Si vous m'aimez bien, vous disposerez de deux 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 les deux commandes et zsh dans iTerm 2 à partir de bash, vous devez procéder comme suit:

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

 enter image description here

À 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 pour l'application de terminal mac par défaut. Ensuite, il nous manque encore les commandes de bash en zsh. Donc, pour ce faire, vous devez aller sur votre bash (où vos commandes fonctionnent) et obtenir la variable PATH de env (utilisez cette commande pour le faire: env | grep PATH).

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

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

Il suffit de rouvrir iTerm 2 et nous avons terminé!

2
Kamil B

J'ai résolu le problème en ouvrant l'onglet Général des préférences de terminal, en modifiant la commande (chemin complet) en /bin/bash en valeur par défaut, puis en modifiant le fichier ~/.zshrc.

enter image description here

export PATH="all your path inside the quotes"

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

enter image description here

Après avoir enregistré le fichier, modifiez le /bin/zsh dans votre commande ou sélectionnez par défaut enter image description here

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

2
Vish

Dans mon cas, c'est par erreur que le code commenté a été décommenté dès la première ligne.

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

Le hash a été enlevé. Après l'ajout, ça a bien fonctionné.

Je viens de poster ceci ici afin que quelqu'un puisse trouver cela utile. Parce que c'est juste le début de la ligne et peut ê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 manières.

0
Bhojendra Rauniyar

Comme d'autres l'ont déjà dit, il suffit de redémarrer le terminal une fois les modifications apportées pour réinitialiser les modifications apportées au 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 mot clé pour ouvrir le programme à partir de la ligne de commande.

0
Nathan Minarik

Redémarrer le terminal a également fait l'affaire pour moi.

0
Sergio Acosta

Un moyen de modifier le fichier .zshrc sans le faire via iTerm2 ou 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 éditer le fichier. 

0
Ramboo19

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

Sudo yum remove zsh
Sudo yum install -y zsh
0
Geek