방금 도구를 설치했는데, 해당 도구가 어디에 있는지 더 이상 알 수 없습니다. /usr/bin, 또는 다른 곳. 주문 이 프로그램은 바이너리 파일, 소스 코드 및 매뉴얼 페이지를 가져올 수 있습니다. 그러나 어떤 조치를 취하기 전에 가장 중요한 질문, 즉 셸이 실제로 어떤 파일을 실행할 것인지에 대한 답은 제공하지 않습니다.
어디에 ~와 함께 명령 -v 그리고 이 두 명령어는 같은 것을 검색하지 않습니다. 이러한 차이점은 프로그램의 여러 버전, 별칭 또는 Bash 함수가 동일한 이름을 가질 때 유용하게 사용됩니다.

Whereis가 진정으로 찾고 있는 것은 무엇일까요?
가장 간단한 사용 사례는 옵션 없이 명령어 이름만 제공하는 것입니다.
배쉬는 어디 있어?
SSH는 어디에 있나요?
nginx는 어디에 있나요?
출력 결과에는 한 줄에 여러 경로가 포함될 수 있습니다. 어디에 이 도구는 바이너리 파일, 소스 코드, 매뉴얼 문서 등 세 가지 유형의 파일을 검색합니다. 알려진 Linux 위치를 검사하며, 다음 사항도 고려합니다. 길 그리고 맨패스따라서 단순히 셸이 실행할 수 있는 실행 파일만 검사하는 것이 아닙니다.
관심 있는 유형으로 검색 범위를 좁힐 수 있습니다.
whereis -m bash
whereis -s bash
-비바이너리 파일을 검색합니다.-중매뉴얼 페이지 및 정보 파일 검색;-에스출처를 찾아보세요.
소스 코드 검색 결과가 없다고 해서 프로그램이 잘못 설치된 것은 아닙니다. 배포판은 소스 코드를 포함하지 않고 실행 파일과 설명서만 설치하는 경우가 많습니다. /usr/src컴퓨터에서 실제로 검사된 파일을 보려면 다음을 사용하십시오.
-l은 어디에 있습니까?
거기 매뉴얼 페이지는 어디에 있나요? 이 명령은 해당 경로와 사용 가능한 옵션에 대한 자세한 정보를 제공합니다. 이 명령은 재귀적인 파일 검색을 지원하지 않습니다. 디렉터리 트리에서 임의의 파일을 찾으려면 다음 가이드를 참조하십시오. 리눅스에서 찾기.
셸에서 실제로 실행된 명령어를 확인하세요.
입력했을 때 어떤 내용이 나타날지 알고 싶다면 파이썬3, 또는 몽툴 명령 -v :
명령어 -v 파이썬3
명령어 -v nginx
명령 -v mytool
이 명령은 셸의 이름 해석 방식을 따릅니다. 제공된 이름에 따라 실행 파일, 내장 함수, 함수 또는 별칭 정의의 경로를 표시할 수 있습니다. 또한 반환 코드를 통해 스크립트에서 해당 명령의 존재 여부를 정확하게 확인할 수 있습니다.
명령이 -v mytool >/dev/null 2>&1이면
"mytool을 사용할 수 있습니다"라고 에코합니다.
또 다른
echo "mytool을 찾을 수 없습니다" >&2
fi
사용하지 마십시오 어디에 이 테스트의 경우, 일치하는 파일이 없으면 단순히 이름 뒤에 콜론을 붙이고 반환 코드 null을 반환하도록 할 수 있습니다. 그러면 스크립트는 해당 명령이 존재한다고 잘못 판단하게 됩니다.
친절한 더 나아가 Bash가 이름을 어떻게 해석하는지 설명합니다.
CD 유형
ls 유형
type -a ls
type -P ls
CD 유형것을 나타냅니다내부 셸 명령입니다.ls 유형처음 사용된 정의를 보여줍니다.type -a lstype -P ls실행 파일을 강제로 검색합니다.길.
거기 GNU Bash 유형 문서 이 내용은 해당 결과를 정확하게 설명합니다. Zsh, Fish 또는 다른 셸을 사용하는 경우 해당 셸의 문서를 참조하십시오. 별칭 및 함수 해석 방식은 셸마다 다릅니다.
“어떤 것”이 전체 이야기를 말해주지 않는 이유를 이해하기
어느 튜토리얼에서 흔히 볼 수 있는 내용입니다:
어떤 python3
어떤 nginx
일반적으로 실행 파일을 다음 위치에서 찾습니다. 길문제는 외부 프로그램이 현재 셸의 정확한 상태를 알지 못하는 경우가 많다는 것입니다. 구현 방식과 배포판에 따라 별칭, 함수 또는 내장 명령어를 무시할 수 있습니다. 셸 스크립트에서 테스트하는 경우, 명령 -v -a를 입력하세요 더 많은 정보를 제공합니다.
간단한 예시를 통해 차이점을 설명하겠습니다.
별칭 ll='ls -lah'
어디 있어?
어느 것
명령 -v ll
유형 II
어디에 해당 이름의 파일을 찾을 수 없습니다. ll별칭이 바이너리가 아니기 때문입니다. 명령 -v 그리고 친절한 하지만 그들은 Bash의 잘 알려진 정의를 봅니다. 해당 기사는 다음과 같습니다. 리눅스에서의 별칭
동일한 프로그램의 여러 설치를 식별합니다.
수동 설치 후 충돌이 자주 발생합니다. /usr/local/bin, 추가 $HOME/.local/bin /고르다먼저 결과를 비교해 보세요.
type -a python3
readlink -f "$(type -P python3)"
어디에 여러 개의 바이너리 파일과 설명서를 표시할 수 있습니다. -a를 입력하세요 Bash가 찾은 버전을 해결 순서대로 보여줍니다. 명령 -v 첫 번째 선택을 확인한 다음 읽기 링크 -f 잠재적인 심볼릭 링크를 해결합니다. 마지막으로 파일의 패키지 소유자를 확인합니다.
dpkg -S "$(type -P python3)"
rpm -qf "$(type -P python3)"
pacman -Qo "$(type -P python3)"
Linux 환경에서 tar.gz 아카이브 사본이 존재하는 이유를 보여줍니다 /usr/local/bin 추적 가능해야 합니다.
Bash는 이미 해결된 특정 경로도 기억합니다. 실행 파일을 이동하거나 교체한 후에는 이 캐시를 지우고 다시 확인하십시오.
해시 -l
해시 -r
명령어 -v 파이썬3
type -a python3
잘못된 파일이 먼저 로드된 경우, 로드 순서를 수정하십시오. 길 임의의 바이너리 파일을 삭제하는 대신에. 가이드는 다음과 같습니다. 리눅스의 PATH 임시 테스트와 영구 수정 사항에 대한 세부 정보를 제공합니다.
whereis 명령을 특정 폴더로 제한합니다.
아래 설치된 소프트웨어를 제어하려면 /고르다바이너리 파일이나 설명서의 검색 경로를 바꿀 수 있습니다. -에프 폴더 목록의 끝과 검색할 이름의 시작을 나타냅니다.
whereis -b -B /opt/mytool/bin /usr/local/bin -f mytool
whereis -m -M /opt/mytool/share/man -f mytool
이 특정 검색 기능을 사용하면 전체 디스크를 스캔하지 않고도 설치된 파일의 내용을 확인할 수 있습니다. 또한 이 기능은 파일을 변경하지 않습니다. 길셸에서 실행된 명령도 마찬가지입니다. 따라서 프로그램을 제거하거나 교체하기 전에 다음 순서를 기억하십시오.
- 사용
명령 -v -
-a를 입력하세요충돌을 감지하기 위해; - 링크를 해결하다
읽기 링크 -f; - 파일 소유자 패키지를 확인하세요.
- 사용
어디에실행 파일과 관련 문서를 찾으려면.
이러한 검사를 통해 어떤 파일이 실행될지, 어디에서 왔는지, 그리고 해당 파일의 설명서를 어디에서 찾을 수 있는지 알 수 있습니다. 그런 다음 설치 또는 기타 문제를 수정할 수 있습니다. 길