저는 Arch Linux에서 zsh와 oh-my-zsh를 사용하고 있습니다. 다음 명령을 사용하여 디렉터리를 만들 수 없습니다mkdir
edward@ArchLinux ~ $ sudo mkdir -p /samba/raspberry
[sudo] password for edward:
sudo: nocorrect: command not found
zsh의 자동 완성 기능 및 정의된 별칭과 관련이 있다는 것을 알고 있지만 알아낼 수는 없습니다.
답변1
파일 끝에 정의된 별칭을 재정의하는 alias sudo='sudo '
이 별칭이 파일 끝에 정의되어 있습니다 .source
~/.zshrc
alias sudo='nocorrect sudo'
.oh-my-zsh/lib/correction.zsh
alias sudo='nocorrect sudo'
zsh의 자동 완성 기능이 작동하려면 필요합니다
.zsh에서 sudo [command] 자동 수정을 비활성화하는 방법은 무엇입니까?
그러나 동시에 더 많은 작업을 수행하려면 alias sudo='sudo '
다음 명령에 대한 별칭이 필요합니다 .sudo
sudo를 사용할 때 .bashrc 파일에서 별칭 로드
이것은 alias sudo='sudo '
zsh에서도 작동합니다.
따라서 zsh를 사용할 때 zsh의 자동 완성 기능을 사용할 수 있고 다른 명령에 대한 별칭도 가질 수 있으므로 sudo
이제 zsh의 자동 완성 기능이 비활성화되어 있습니다.
(혼란스럽지 않고 명확하게 설명하길 바랍니다.)
답변2
@edward-torvalds의 답변에 추가하면
.aliases 파일의 탭 사용이 일부 사람들에게는 명확하지 않을 수 있습니다. 가독성을 높이기 위해 별칭 정의를 다음과 같이 작성할 수 있습니다.
alias sudo=$'nocorrect sudo\t'
그러나 후행에 문제가 있었습니다.공간, 그러나 후행은 아님상표.
alias sudo='sudo '
alias sudo='nocorrect sudo '
위의 별칭은 다음과 같은 오류를 발생시킵니다.
~$ which mkdir
mkdir: aliased to nocorrect mkdir -p -pv
~$ which sudo
sudo: aliased to nocorrect sudo
~$ alias sudo
sudo='nocorrect sudo '
~$ sudo mkdir /tmp/foo
sudo: nocorrect: command not found
그래서 이것은 작동합니다alias sudo='sudo '
하지만 나는 alias sudo=$'nocorrect sudo\t'
너무 단순한 1K+ 라인 zshrc를 선호합니다. ;)
...이유를 아시는 분 계시면 댓글 남겨주세요!
답변3
alias sudo='sudo '
별칭을 사용하는 한 가지 비결은 경로에 다음과 같은 작은 스크립트를 만드는 것 nocorrect
입니다 .nocorrect
#!/bin/sh
exec "$@"
이로 인해 nocorrect
sudo에 문제가 발생할 수 있습니다.