1

Скажем, у меня есть эти два в моем .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 ответ1

2

Просто чтобы уточнить, вы запускаете 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .