명령이 별칭, 함수 또는 바이너리인지 테스트하는 방법은 무엇입니까?

명령이 별칭, 함수 또는 바이너리인지 테스트하는 방법은 무엇입니까?

command 가 있는데 foo, 그것이 바이너리인지, 함수인지, 별칭인지 어떻게 알 수 있나요?

답변1

Bash(또는 다른 Bourne 유사 셸)를 사용하는 경우 type.

type command

command쉘이 내장인지, 별칭이 무엇인지(그렇다면 별칭이 무엇인지), 함수(그렇다면 함수 본문이 나열됩니다)인지, 아니면 파일에 저장되어 있는지(그렇다면 해당 파일의 경로)를 알려줍니다. 파일).

함수의 별칭과 같은 중첩된 상황이 있을 수 있습니다. 그렇다면 실제 유형을 찾으려면 먼저 해당 유형의 별칭을 해제해야 합니다.

unalias command; type command

"바이너리" 파일에 대한 자세한 내용을 보려면 다음을 수행하세요.

file "$(type -P command)" 2>/dev/null

command별칭, 함수 또는 쉘 내장인 경우 아무것도 반환되지 않지만 스크립트 또는 컴파일된 바이너리인 경우 더 많은 정보가 반환됩니다.

인용하다

답변2

zsh에서는 및 배열을 검사할 aliasesfunctions있습니다 commands.

(( ${+aliases[foo]} )) && print 'foo is an alias'
(( ${+functions[foo]} )) && print 'foo is a function'
(( ${+commands[foo]} )) && print 'foo is an external command'

또한 builtins내장 명령의 경우입니다.

(( ${+builtins[foo]} )) && print 'foo is a builtin command'

편집 : 확인zsh/매개변수 모듈사용 가능한 어레이의 전체 목록에 대한 문서입니다.

답변3

대답은 사용하는 쉘에 따라 다릅니다.

zsh의 경우 쉘 내장 기능이 whence -w원하는 것을 정확하게 알려줍니다.

예를 들어

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 

관련 정보