假設我的中有這兩個.zshrc
:
alias sudo='nocorrect sudo'
alias boot27='grub-reboot 4 && reboot'
boot27
給出boot27: command not found
.如果我將別名更改為'nocorrect sudo '
或 只是'sudo '
,它就可以工作,但其他的東西,例如mkdir
Give nocorrect: command not found
。
答案1
只是為了澄清一下,你運行sudo boot27
並得到,boot27: command not found
因為既然sudo
是一個別名,bash 就會停止掃描別名並且不會將其識別boot27
為別名。正如所討論的這裡,處理此問題的一種方法是在別名定義的末尾添加一個空格。
新增空格可以讓 bash 識別boot27
,但現在的問題是您的 root 帳號未設定為使用 zsh,因此sudo
需要啟動 bash shell。nocorrect
是一個zsh
東西,bash
不知道它是什麼,所以它抱怨。
解決此問題的最簡單方法是將 root 的 shell 設定為/bin/zsh
:
sudo chsh
然後用空格設定別名:
alias sudo='nocorrect sudo '
不過你的boot27
別名還有另一個問題。我假設您運行它sudo boot27
,shell 將讀取別名並將其擴展為:
sudo grub-reboot 4 && reboot
因此,它將以 root 身份運行grub-reboot
,但將以reboot
普通用戶身份運行。您想要的是將別名更改為
alias boot27='grub-reboot 4 && sudo reboot'
並將其運行為sudo boot27
,或將您的別名更改為
alias boot27='sudo grub-reboot 4 && sudo reboot'
sudo
並在沒有, just 的情況下運行它boot27
。