zsh에서 별칭과 함께 sudo를 어떻게 사용합니까?

zsh에서 별칭과 함께 sudo를 어떻게 사용합니까?

내 안에 다음 두 가지가 있다고 가정해 보세요 .zshrc.

alias sudo='nocorrect sudo'
alias boot27='grub-reboot 4 && reboot'

boot27을 제공합니다 boot27: command not found. 별칭을 'nocorrect sudo 'or just 로 변경하면 'sudo '작동하지만 mkdirgive 와 같은 다른 것들도 작동합니다 nocorrect: command not found.

답변1

명확히 하기 위해, 이후는 별칭이기 때문에 실행 sudo boot27하고 가져옵니다 . bash는 별칭 검색을 중지하고 별칭으로 인식하지 않습니다. 논의boot27: command not foundsudoboot27여기, 이를 처리하는 한 가지 방법은 별칭 정의 끝에 공백을 추가하는 것입니다.

공간을 추가하면 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.

관련 정보