假设我的中有这两个.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
因为由于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
因此,它将grub-reboot
以 root 身份运行,但也会reboot
以普通用户身份运行。您需要将别名更改为
alias boot27='grub-reboot 4 && sudo reboot'
并将其作为 运行sudo boot27
,或者将别名更改为
alias boot27='sudo grub-reboot 4 && sudo reboot'
并且运行它,无需sudo
,只需boot27
。