내 안에 다음 두 가지가 있다고 가정해 보세요 .zshrc
.
alias sudo='nocorrect sudo'
alias boot27='grub-reboot 4 && reboot'
boot27
을 제공합니다 boot27: command not found
. 별칭을 'nocorrect sudo '
or just 로 변경하면 'sudo '
작동하지만 mkdir
give 와 같은 다른 것들도 작동합니다 nocorrect: command not found
.
답변1
명확히 하기 위해, 이후는 별칭이기 때문에 실행 sudo boot27
하고 가져옵니다 . bash는 별칭 검색을 중지하고 별칭으로 인식하지 않습니다. 논의boot27: command not found
sudo
boot27
여기, 이를 처리하는 한 가지 방법은 별칭 정의 끝에 공백을 추가하는 것입니다.
공간을 추가하면 bash가 인식할 수 있지만 boot27
이제 문제는 루트 계정이 zsh를 사용하도록 설정되지 않아 sudo
대신 bash 쉘을 시작한다는 것입니다. nocorrect
그것은 zsh
물건이고 bash
그것이 무엇인지 모르기 때문에 불평합니다.
이 문제를 해결하는 가장 간단한 방법은 루트의 쉘을 다음과 같이 설정하는 것입니다 /bin/zsh
.
sudo chsh
그런 다음 공백으로 별칭을 설정하십시오.
alias sudo='nocorrect sudo '
귀하 boot27
의 별칭에는 또 다른 문제가 있습니다. 나는 당신이 그것을 다음과 같이 실행한다고 가정합니다 sudo boot27
. 쉘은 별칭을 읽고 이를 다음과 같이 확장합니다.
sudo grub-reboot 4 && reboot
따라서 루트로 실행되지만 일반 사용자로 grub-reboot
실행됩니다 . reboot
원하는 것은 별칭을 다음으로 변경하는 것입니다.
alias boot27='grub-reboot 4 && sudo reboot'
로 실행하거나 sudo boot27
별칭을 다음으로 변경합니다.
alias boot27='sudo grub-reboot 4 && sudo reboot'
sudo
없이 실행하세요 boot27
.