최근에 내 컴퓨터를 Fedora 33(Linux 5.9.16-200)으로 업그레이드했습니다. 저는 vim Enhanced 버전 8.2를 실행하고 있습니다. 관리자 권한으로 파일을 편집하려고 sudo vim
(심지어 ) 입력하면 sudo vi
다음 오류가 발생합니다.
sudo: __vi_internal_vim_alias: command not found
이 문제의 원인이 무엇인지 잘 모르겠습니다. Vim은 sudo 없이 정상적으로 로드됩니다. 이 문제를 해결하는 방법을 알려주실 수 있나요? 감사해요.
고쳐 쓰다:
을 실행한 후 which vim
다음과 같은 결과를 얻습니다.
alias vim='__vi_internal_vim_alias'
__vi_internal_vim_alias ()
{
( test -f /usr/bin/vim && exec /usr/bin/vim "$@";
test -f /usr/bin/vi && exec /usr/bin/vi "$@" )
}
이게 무슨 일인지, 어디서 일어난 일인지 잘 모르겠습니다. 어쩌면 이것은 Fedora 33 문제일 수도 있습니다. 위의 정보를 고려할 때 영구 수정 사항으로 무엇을 권장하시겠습니까?
답변1
Fedora 33에서도 같은 문제가 발생했습니다. 이는 sudo
내 환경에 정의된 별칭 때문인 것 같습니다 .
$ alias sudo
alias sudo='\sudo '
따라서 bash는 sudo
다음 예와 같이 별칭에 인수로 전달된 별칭을 어떻게든 확인합니다.
$ alias foo='echo foo'
$ sudo foo
foo
나는 이것을 갖고 싶었습니다:
$ sudo foo
$ sudo: foo: command not found
이 별칭을 제거하면 나에게 도움이 되었습니다. 이 별칭은 /usr/local/bin/alias.sh
프로젝트 synth-shell
(https://github.com/andresgongora/synth-shell)
답변2
@scy가 언급했듯이 vi와 vim의 별칭을 해제하는 것은 sudo="sudo " 별칭을 유지하여 다른 별칭과 함께 사용할 수 있는 솔루션입니다.
다른 쉘에 대한 답변을 확장하면 다음과 같습니다.
ZSH 쉘:에 추가하다.zshrc파일(변경의 영향을 받을 사용자의 파일)
- 거짓말:
Fedora 33 워크스테이션(또는 서버 또는 기타 비원자적 OS 배포판)의 경우: /home/$USER/.zshrc
Fedora CoreOS 33.x(또는 Silverblue 33 또는 기타 유사한 Atomic OS 배포판)의 경우: /var/home/$USER/.zshrc
- 다음 코드 줄:
[ "$(type -w vi)" = 'vi: alias' ] && unalias vi
[ "$(type -w vim)" = 'vim: alias' ] && unalias vim
배시 쉘:에 추가하다.bashrc파일(변경의 영향을 받을 사용자의 파일)
- $USER 홈 디렉터리에 해당하는 OS/Distro 특정 위치에 각각 위치합니다(Fedora Workstation에 대한 지침 확인 등...).
- 아래 코드:
[ "$(type -t vi)" = 'alias' ] && unalias vi
[ "$(type -t vim)" = 'alias' ] && unalias vim
폴리스티렌~에 대한ZSH 쉘, 이 솔루션은 유사한 초기화 상황에서 다른 CLI 애플리케이션과 관련된 유사한 문제를 해결할 수 있습니다. 예를 들어:MC(자정 사령관). 동시에,MC그런 문제는 없을 겁니다배쉬 쉘.