내 셸(Oh My Zsh)에서 별칭을 어떻게 재정의하나요?

내 셸(Oh My Zsh)에서 별칭을 어떻게 재정의하나요?

ls 명령에 별칭을 추가하고 싶지만 이전에 정의된 별칭이 있고 정의하기 전에 먼저 호출되는 것 같습니다. 나는 .zshrc를 사용하여 별칭을 정의합니다. 이것이 제가 하는 일입니다:

alias ls="ls --classify --almost-all --group-directories-first"

다음은 alias 명령의 출력입니다.

$ alias | grep "ls="
ls='ls --color=tty'

다른 별칭이 정의된 위치를 확인할 수 있는 작업이 있습니까? 아니면 새로운 것으로 덮어쓰시겠습니까?

참고: 저는 ZSH를 사용하고 있으며 .profile 및 도움이 될 수 있는 기타 관련 파일에서 이를 검색했습니다. 확인해야 할 파일이 있으면 댓글 부탁드립니다.

답변1

alias명령은 동일한 이름의 이전 별칭을 덮어씁니다. 따라서 일반적으로 별칭이 zsh 프레임워크에서 정의한 별칭을 재정의하도록 하려면,당신의 끝에 넣어.zshrc. 함수 정의, 변수 할당, 키 바인딩 등과 같은 다른 기능의 경우에도 마찬가지입니다. 일반적으로 말하면 최신 정의가 승리합니다.

"최신 정의 승리"의 극단적인 경우는 단순히 동일한 유형의 객체에 대한 최신 정의라는 것입니다. 특히 별칭, 함수 및 외부 명령은 서로 다른 유형의 개체입니다. 예를 들어 동일한 이름의 별칭을 정의한 후 함수를 정의하면 별칭을 덮어쓰지 않습니다. 먼저 전화를 하셔야 합니다 unalias. (또한 foo () { … }별칭이 foo별칭을 확장할 때의 구문에 유의하세요. unalias별칭을 먼저 확장하거나 해당 function foo { … }구문을 사용해야 합니다.)

때로는 다음을 통해 런타임에 설정을 재정의할 수 있습니다.후크 기능. 예를 들어, 버전 제어를 돕는 프레임워크는 버전 제어 디렉터리에 들어가거나 나갈 때 변수와 별칭 또는 함수를 변경하는 경우가 많습니다. 이런 일이 발생하면 기존 후크를 수정하거나 마음에 들지 않는 후크 이후에 자체 후크를 실행해야 합니다.


별칭이 어디에 설정되어 있는지 확실하지 않으면 실행 script -c 'zsh -x'한 다음 를 입력합니다 exit. 그러면 typescript초기화 중에 zsh가 실행하는 모든 명령의 로그가 포함된 zsh라는 파일이 생성됩니다 . 해당 파일에서 alias ls=.(비슷한 내용일 수도 있음 alias foo=bar ls=whatever) 을 검색합니다 .

관련 정보