私はArch Linuxでzshとoh-my-zshを使用しています。次のコマンドを使用してディレクトリを作成できませんmkdir
edward@ArchLinux ~ $ sudo mkdir -p /samba/raspberry
[sudo] password for edward:
sudo: nocorrect: command not found
zshのオートコンプリート機能と定義されたエイリアスに関連していることを知っていますが、理解することはできません。
答え1
ファイルの最後に定義されているエイリアスをオーバーライドするalias sudo='sudo '
このエイリアスは、ファイルの最後に定義されています。source
~/.zshrc
alias sudo='nocorrect sudo'
.oh-my-zsh/lib/correction.zsh
alias sudo='nocorrect sudo'
zshのオートコンプリート機能が機能するために必要です
。zshでsudo [command]自動修正を無効にする方法は?
ただし、同時により多くのタスクを実行するには、alias sudo='sudo '
次のコマンドのエイリアスが必要です。sudo
sudoを使用するとき.bashrcファイルからエイリアスをロードする
これはalias sudo='sudo '
zshでも動作します。
したがって、zsh を使用するときに zsh のオートコンプリート機能を使用でき、他のコマンドのエイリアスも持つことができるため、sudo
zsh のオートコンプリート機能が無効になりました。
(混乱することなく明確に説明してください。)
答え2
@edward-torvaldsの回答に追加すると
.aliasesファイルのタブの使用が一部の人にとっては明確ではないかもしれません。読みやすくするために、エイリアス定義を次のように作成できます。
alias sudo=$'nocorrect sudo\t'
しかし、末尾に問題がありました。スペースしかし、末尾ではない商標。
alias sudo='sudo '
alias sudo='nocorrect sudo '
上記のエイリアスは次のエラーを生成します。
~$ which mkdir
mkdir: aliased to nocorrect mkdir -p -pv
~$ which sudo
sudo: aliased to nocorrect sudo
~$ alias sudo
sudo='nocorrect sudo '
~$ sudo mkdir /tmp/foo
sudo: nocorrect: command not found
だからこれはうまくいきますalias sudo='sudo '
しかし、私はあまりにもalias sudo=$'nocorrect sudo\t'
単純な1K +ラインzshrcを好む。 ;)
...理由をご存知の方は、コメントを残してください!
答え3
alias sudo='sudo '
エイリアスを使用する1つの秘密は、パスに次の小さなスクリプトを作成することnocorrect
です。nocorrect
#!/bin/sh
exec "$@"
これはnocorrect
sudoに問題を引き起こす可能性があります。