zsh에서 함수 내에서 별칭을 정의한 다음 사용하려고했습니다. 작동하지 않습니다. 왜이 세상에서? 주변을 둘러 볼 수 있습니까?새로 정의 된 별칭이 함수 (zsh) 내에서 작동하지 않습니다.
% cat > test
alias_problem() {
alias hithere="echo Hi there!"
hithere
}
^D
% source test
% alias_problem
alias_problem:2: command not found: hithere
% hithere
Hi there!
% wtf?
zsh: no matches found: wtf?
이상적으로, Hi there!
사람이 무슨 일이 일어나고 있는지 설명 할 수 인쇄 할 alias_problem를 실행? 그리고 주위를 둘러 볼 방법이 있습니까?
배경 : 몇 가지 별칭을 만든 다음 그 중 하나를 실행하는 기능을 만들고 싶습니다. 예 :
myfuncA() {
alias alias1=...
alias alias2=...
alias1
}
등의 명령을 사용하여 몇 가지 명령으로 환경을 설정할 수 있습니다. 별칭을 다른 세트로 토글하는 두 번째 기능이 있습니다.
방금 함수를 사용해야합니까? 어쨌든 zsh에서 함수에 대한 별명을 사용하는 이유가 있습니까? 앞으로 일어날 일을 피하고 어떻게 피하는지를 알고 싶습니다.
감사합니다 :)
--Peter
그래서 당신 (그리고 zshmisc)은 echobar가 이미 정의 되었다면'ls; 에코 바르; ls'는'ls '로 확장됩니다; 에코 바; ls' 그리고 나서 실행 되었습니까? 나는 그것을 놓쳤다. 감사. –
오른쪽. 함수가 정의 될 때 코드가 읽히므로 별칭은 함수 호출 다음에 읽혀지는 코드에 대해 정의되지만 함수가 * 호출 될 때 별칭 확장을 거치지 않습니다. 다음과 같이 좀 더 명확하게 보입니다 :'foo() {bar; }', 별명'alias bar = "echo foo"'를 정의하십시오. 'foo'를 호출하면 함수를 호출 할 때 함수 본문에 별칭 확장이 수행되지 않으므로 명령에 오류가 없음을 생성합니다. – chepner