Linux에서 위치와 위치의 차이점


27

Linux locate와 whichLinux 의 차이점은 무엇입니까 ?

내가 사용하면 왜 locate mentor모든 멘토가 나열되지만 내가 사용 which mentor하면 "멘토 없음"이라고 표시 됩니다. 이것은 무엇을 의미합니까?



이 또한 where및 whereis.
— Jan Tojnar

bash에서 선호하는 것은 : type -all acommand. 그리고 당신의 질문 뒤에 XYProblem을 읽으면 명령이 있습니다 .loc을 통해 볼 수는 있지만 실행할 수 없습니까? 그런 다음 특정 사용자의 ~/.profile파일 또는 수행 할 작업을 알고 있다고 확신하는 경우 전역 /etc/profile파일 에서 PATH를 편집 하십시오. [경고 : 잘못된 경로를 추가하면 시스템 스크립트 (및 많은 OS)가 손상 될 수 있습니다. / etc / profile ...의 $ PATH (예 : 일반적으로 다른 곳에있는 명령을 포함하는 경로) 변수의 끝에 만 추가하는 것이 좋습니다. 그리고 그 경로 에 ::또는 다른 .곳을 두지 마십시오 .
— Olivier Dulac

답변:


45

차이점은 무엇이며 locate그리고 which?

locate 이전에 구축 된 데이터베이스를 사용하여 파일을 찾습니다.

locateupdatedb(8)에서 준비한 하나 이상의 데이터베이스를 읽고 하나 이상의 PATTERN과 일치하는 파일 이름을 한 줄에 하나씩 표준 출력에 씁니다.

소스 locate (1)-Linux 매뉴얼 페이지

updatedblocate(1)에서 사용하는 데이터베이스를 작성하거나 업데이트합니다 . 데이터베이스가 이미 존재하면 변경되지 않은 디렉토리를 다시 읽지 않도록 데이터가 재사용됩니다.

updatedb일반적으로 cron기본 데이터베이스를 업데이트하기 위해 (8) 매일 실행됩니다 ( /var/lib/mlocate/mlocate.db)

소스 업데이트 b (8)-Linux 매뉴얼 페이지


whichPATH환경 변수 의 디렉토리에서 실행 파일을 검색하여 실행 파일을 찾습니다 .

which하나 이상의 인수를 취합니다. 각 인수에 stdout대해이 프롬프트가 쉘 프롬프트에서 입력되었을 때 실행 된 실행 파일의 전체 경로로 인쇄 합니다. 환경 변수에 나열된 디렉토리에서 실행 파일 또는 스크립트를 검색하여이를 수행합니다 PATH.

bash(1) 과 동일한 알고리즘을 사용합니다 .

소스 which (1)-Linux 매뉴얼 페이지


locate mentor멘토를 나열하지만 which mentor"멘토 없음 ..."

그게 무슨 뜻이야?

데이터베이스 mentor에서 찾을 수있는 일부 파일 이 있습니다 locate.

당신은라는 이름의 실행 파일 또는 스크립트가없는 mentor당신에를 PATH.


2
"updatedb"-지나치게 특정한 이름이 아닌 것은 Microsoft만이 아닙니다. (Win32에서는 DeleteObjectGDI 개체를 삭제하고 CloseHandle커널 핸들을 닫습니다. 마찬가지로 DB를 updatedb업데이트합니다. locate)
— user253751

"which"는 경로의 여러 위치에서 동일한 프로그램의 여러 버전이 작동하는 경우 특히 유용하므로 명령을 실행할 때 실제로 실행되는 버전을 알려줍니다. 이것은 예기치 않은 동작을 진단하는 데 도움이되었습니다. 예를 들어, 수동으로 설치된 유틸리티 버전을 시스템에 남겨두고 패키지 관리자가 설치 한 버전을 재정의했음을 알 수있었습니다.
— Carcer

11

which명령을 찾는 which것입니다 (현재 환경에서 실행될 파일 / 링크의 경로 이름을 반환합니다)

locate파일 이름을 찾을 수있다 ( locate의해 제조 된 하나 이상의 데이터베이스를 읽어 updatedb와 standered 출력 패턴 중 적어도 하나의 라인 당 하나의 일치하는 파일 이름을 기입)


2
귀하의 출처에 대한 귀속을 제공하십시오. 귀하의 답변에 대한 설명은 해당 유틸리티의 맨 페이지에서 직접 가져옵니다.
— 복원 Monica Monica iamnotmaynard

5

locate기본적으로 glob 패턴을 취하고 (정규 패턴도 사용 가능) 패턴과 /var/lib/mlocate/mlocate.db일치하는 파일 이름을 데이터베이스 에서 검색합니다 .

whichPATH환경 변수에 의해 해석되는 디렉토리에서 명령의 전체 경로를 검색하는 명령입니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.