假设我的中有这两个.zshrc:
alias sudo='nocorrect sudo'
alias boot27='grub-reboot 4 && reboot'
Run Code Online (Sandbox Code Playgroud)
boot27给出boot27: command not found. 如果我将别名更改为'nocorrect sudo '或 只是'sudo ',它就可以工作,但其他的东西,比如mkdirGive nocorrect: command not found。
只是为了澄清一下,你运行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
Run Code Online (Sandbox Code Playgroud)
然后用空格设置别名:
alias sudo='nocorrect sudo '
Run Code Online (Sandbox Code Playgroud)
不过你的boot27别名还有另一个问题。我假设您运行它sudo boot27,shell 将读取别名并将其扩展为:
sudo grub-reboot 4 && reboot
Run Code Online (Sandbox Code Playgroud)
因此,它将grub-reboot以 root 身份运行,但将以reboot普通用户身份运行。您想要的是将别名更改为
alias boot27='grub-reboot 4 && sudo reboot'
Run Code Online (Sandbox Code Playgroud)
并将其运行为sudo boot27,或者将您的别名更改为
alias boot27='sudo grub-reboot 4 && sudo reboot'
Run Code Online (Sandbox Code Playgroud)
sudo并在没有, just 的情况下运行它boot27。
| 归档时间: |
|
| 查看次数: |
8600 次 |
| 最近记录: |