사용하십시오 type commandname
. commandname
별명, 함수, 내장 또는 외부 명령 (에서 조회 $PATH
)으로 실행 가능한 것이 있으면 true를 리턴합니다 . 또는 내장 명령 또는 외부 명령 (에서 조회 ) 인 command commandname
경우 true를 반환하는를 사용하십시오 .commandname
$PATH
exists () {
type "$1" >/dev/null 2>/dev/null
}
몇 가지 sh 변형이 있습니다 (확실히 사전 POSIX; /bin/sh
OSF1 ≤3.x 및 초기 NetBSD 버전에서 발견 된 Almquist 쉘의 일부 버전 및 20 세기 Linux 배포판에 대해 알고 있음)는 type
항상 0을 반환하거나 그렇지 않습니다 있다. 나는이 천년과 함께 제공된 시스템은 없다고 생각합니다. 이 문제가 발생하면 $PATH
수동으로 검색하는 데 사용할 수있는 기능이 있습니다 .
exists () { (
IFS=:
for d in $PATH; do
if test -x "$d/$1"; then return 0; fi
done
return 1
) }
이 함수는 일반적으로 내장 함수를 제외하고에서 이름을 조회하려는 경우에 유용합니다 $PATH
. command -v
POSIX에 비교적 최근에 추가 되었음에도 불구하고 대부분의 쉘에는이 기능이 내장되어 있습니다 (여전히 POSIX : 2004에서 선택 사항 임). 기본적으로 프로그래머 친화적 인 버전입니다 type
:의 실행 파일에 대한 전체 경로 $PATH
, 내장 또는 함수의 기본 이름 및 별칭의 별칭 정의를 인쇄합니다.
exists_in_path () {
case $(command -v -- "$1") in
/*) return 0;;
alias\ *) return 1;; # alias
*) return 1;; # built-in or function
esac
}
Ksh, bash 및 zsh는 type -p
에서 실행 파일 만 찾아야합니다 $PATH
. bash에서 내장 또는 함수 인 type -p foo
경우 리턴 상태 는 0 foo
입니다. 에서 실행 파일을 테스트 $PATH
하려면 출력이 비어 있지 않은지 확인해야합니다. type -p
POSIX에 없습니다. 예를 들어 데비안의 재 ( /bin/sh
우분투에 있음)에는 없습니다.