[unix] 명령이 별칭, 함수 또는 이진인지 테스트하는 방법?

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



답변

Bash 또는 다른 Bourne과 같은 쉘을 사용하는 경우을 사용할 수 있습니다 type.

type command

command쉘 내장, 별명 (있는 경우 무엇에 대한 별칭), 함수 (및 함수 본문을 나열하는 경우) 또는 파일에 저장되어 있는지 (있는 경우 파일 경로) 여부를 알려줍니다. .

“이진”파일에 대한 자세한 내용은 다음을 수행하십시오.

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

command별명, 함수 또는 쉘 내장 인 경우 아무것도 리턴하지 않지만 스크립트 또는 컴파일 된 바이너리 인 경우 추가 정보를 리턴합니다.

참고 문헌


답변

대답은 사용중인 쉘에 따라 다릅니다.

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

예 :

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


답변

zsh을 당신은 확인하실 수 있습니다 aliases, functionscommands배열을.

(( ${+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'


답변