Zsh имеет функцию, которая позволяет запрашивать исправления файлов в текущем каталоге. Например, если я скажу cd bar
вместо cd baz
, то zsh скажет: zsh: correct 'bar' to 'baz' [nyae]?
Обычно это работает нормально. Однако sudo, похоже, все портит. В частности, предположим, что я хочу управлять версиями моего каталога apache2 с помощью git. Я бы набрал что-то вроде sudo git add .
Это правильная команда для запуска. Однако zsh подсказывал мне zsh: correct 'git' to '.git' [nyae]?
, как будто он не знал, что git — это команда, поэтому думал, что я пытаюсь сослаться на папку .git.
Почему это происходит? Как я могу заставить его перестать подсказывать мне в таких ситуациях?
Спасибо!
РЕДАКТИРОВАТЬ: похоже, что zsh по умолчанию будет рассматривать все аргументы команды как файлы или каталоги. Однако я знаю, что есть некоторые функции для расширения этого. Например, если я наберу git st
tab, то zsh дополнит его до stash, status или stripspace (с документацией по каждому из них). В идеале я хотел бы, чтобы zsh продолжал давать подобные советы даже с чем-то вроде sudo (поэтому я бы предпочел не делать nocorrect). Как мне настроить эту функциональность в zsh?
emerge
/cave
/paludis
,eix
(они принимают имена программ в качестве своих аргументов, и имена программ обычно идентичны именам их каталогов конфигурации), иногдаgrep
, мой собственный скрипт, который запускает приложения в фоновом режиме и так далее. В результате я отключил все исправления, кроме исправления имен команд:setopt nocorrectall
. - person ZyX   schedule 01.07.2013sudo
(иemerge
/…) — это программа, аgit
— ее аргумент. Исправления Zsh ожидают только имена файлов (или каталогов) в аргументах программы, поэтому любая команда, которая принимает что-то, что не является именем файла, подвержена такой проблеме. И вы правы, так какsudo
не является встроенной оболочкой, zsh не знает, чтоgit
это команда. - person ZyX   schedule 01.07.2013setopt correct
сsetopt nocorrectall
. - person ZyX   schedule 03.07.2013