私の に次の 2 つがあるとします.zshrc
:
alias sudo='nocorrect sudo'
alias boot27='grub-reboot 4 && reboot'
boot27
を与えますboot27: command not found
。エイリアスを'nocorrect sudo '
または だけに変更すると'sudo '
動作しますが、 のような他のものはmkdir
を与えますnocorrect: command not found
。
答え1
明確にするために、実行してsudo boot27
取得するのは、エイリアスであるboot27: command not found
ため、bashはエイリアスのスキャンを停止し、エイリアスとして認識しないためです。sudo
boot27
こここれに対処する 1 つの方法は、エイリアス定義の最後にスペースを追加することです。
スペースを追加すると bash が認識できるようになりますboot27
が、問題は、ルート アカウントが zsh を使用するように設定されていないため、sudo
代わりに bash シェルが起動することnocorrect
です。これはzsh
、bash
何なのかわからないため、エラーが発生します。
これを修正する最も簡単な方法は、root のシェルを次のように設定することです/bin/zsh
。
sudo chsh
次に、スペースを使用してエイリアスを設定します。
alias sudo='nocorrect sudo '
ただし、エイリアスboot27
には別の問題があります。 として実行するとsudo boot27
、シェルはエイリアスを読み取り、次のように展開します。
sudo grub-reboot 4 && reboot
つまり、ルートとして実行されますgrub-reboot
が、通常のユーザーとして実行されますreboot
。エイリアスを変更するか、
alias boot27='grub-reboot 4 && sudo reboot'
として実行するsudo boot27
か、エイリアスを次のように変更します。
alias boot27='sudo grub-reboot 4 && sudo reboot'
sudo
を使わずに、 だけを実行しますboot27
。