command 가 있는데 foo
, 그것이 바이너리인지, 함수인지, 별칭인지 어떻게 알 수 있나요?
답변1
Bash(또는 다른 Bourne 유사 셸)를 사용하는 경우 type
.
type command
command
쉘이 내장인지, 별칭이 무엇인지(그렇다면 별칭이 무엇인지), 함수(그렇다면 함수 본문이 나열됩니다)인지, 아니면 파일에 저장되어 있는지(그렇다면 해당 파일의 경로)를 알려줍니다. 파일).
함수의 별칭과 같은 중첩된 상황이 있을 수 있습니다. 그렇다면 실제 유형을 찾으려면 먼저 해당 유형의 별칭을 해제해야 합니다.
unalias command; type command
"바이너리" 파일에 대한 자세한 내용을 보려면 다음을 수행하세요.
file "$(type -P command)" 2>/dev/null
command
별칭, 함수 또는 쉘 내장인 경우 아무것도 반환되지 않지만 스크립트 또는 컴파일된 바이너리인 경우 더 많은 정보가 반환됩니다.
인용하다
답변2
zsh에서는 및 배열을 검사할 aliases
수 functions
있습니다 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