Допустим, у меня есть эти два в моем .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. nocorrect
это zsh
штука, bash
понятия не имеющая, что это такое, поэтому и жалуется.
Самый простой способ исправить это — установить для root-оболочки следующее /bin/zsh
:
sudo chsh
Затем задайте свой псевдоним с помощью пробела:
alias sudo='nocorrect sudo '
Однако у вашего boot27
псевдонима есть другая проблема. Я предполагаю, что вы запускаете его как sudo boot27
, оболочка прочитает псевдоним и расширит его до:
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
.