Comment désactiver "cd automatique" dans zsh avec oh-my-zsh

29

La recherche sur Google n'a donné aucun résultat. Voici ce que je veux dire: j'ai un fichier binaire nommé xdans mon chemin (pas le dossier en cours, mais il se trouve dans le PATH), et aussi un dossier avec le même nom dans le répertoire de travail en cours. Si je tape x, je veux que le binaire s'exécute, mais à la place, il se trouve dans ce dossier. Comment puis-je réparer ça?

Gabi Purcaru
la source

Réponses:

46

C'est trois questions en une ;-)

Option AUTO_CD et comment la trouver

Tout d'abord, l'option que vous recherchez est AUTO_CD. Vous pouvez facilement le trouver en levant les yeux man zshoptions. Utilisez votre fonction de recherche de téléavertisseurs, généralement vous appuyez sur /et entrez le mot-clé. Avec nvous passez à l'occurrence suivante. Cela fera apparaître les éléments suivants:

[..]
   Changing Directories
       AUTO_CD (-J)
              If  a  command is issued that can't be executed as a normal command, and the command is the name of a directory, perform the cd command to that directory.
[..]

L'option peut être désactivée à l'aide de unsetopt AUTO_CD.

Désactiver correctement

Vous utilisez oh-my-zsh qui est décrit comme

"Un framework communautaire pour gérer votre configuration zsh" Comprend plus de 120 plugins optionnels (rails, git, OSX, hub, capistrano, brew, ant, macports, etc), ...

Donc, la prochaine chose est de savoir comment activer / désactiver les options en fonction du cadre.

Le fichier readme.textile indique que la manière préférée d'activer / désactiver les plugins serait une entrée dans votre .zshrc: plugins=(git osx ruby) Découvrez quel plugin utilise l'option AUTO_CD. Comme découvert dans la page de manuel, il peut être appelé via le commutateur -J ou AUTO_CD. Puisque oh-my-zsh est disponible sur github, sa recherche fera apparaître le fichier lib/theme-and-appearance.zsh. Si vous ne voulez pas désactiver l'intégralité du plugin "thème et apparence", mettez un unsetopt AUTO_CDdans votre .zshrc. Ne modifiez pas directement les fichiers de oh-my-zsh, car si vous mettez à jour le framework, vos modifications seront perdues.

Pourquoi les exécutables ne sont pas appelés directement

Votre troisième question est de savoir comment exécuter un binaire directement: vous devez exécuter votre fichier binaire via un chemin, par exemple avec un préfixe ./comme dans ./do-something. Il s'agit d'une sorte de fonction de sécurité qui ne doit pas être modifiée. comment brancher une clé USB, la monter et la regarder avec ls. S'il y a un exécutable appelé lsqui supprime votre répertoire personnel, tout serait parti, car cela aurait écrasé l'ordre de votre $ PATH.

Si vous avez des commandes que vous appelez à plusieurs reprises, la configuration d'un alias dans votre .zshrc serait une solution courante.

écho
la source
4
Merci beaucoup! Ce dont j'avais besoin, c'était de la unsetopt auto_cdligne (j'ai mentionné explicitement que l'exécutable est sur mon chemin; néanmoins, l'explication pourrait aider d'autres utilisateurs à comprendre les choses).
Gabi Purcaru
Merci pour la réponse complète et en fournissant des détails sur la façon dont vous avez trouvé les informations (aidant ainsi les autres à trouver des informations comme celle-ci à l'avenir).
slash arrière
2
Votre dernier paragraphe n'a aucun sens. L'OP pose des questions sur un binaire dans leur PATHvariable d'environnement qu'ils veulent avoir la priorité sur autocd. Cela n'a rien à voir avec l'incapacité du script shell à exécuter un exécutable à partir d'un chemin sans spécifier ni l'un ./ni l' autre /.
Qix
Le premier lien vers le fichier Lisez-moi ne fonctionne pas. Ça y est. De plus, le librépertoire OMZ n'a rien à pluginsvoir avec .En ce qui concerne la question et comme vous l'avez dit, la commande correcte est unsetopt.
Timo