차이점은 무엇입니까?


112

차이 무엇 whichwhereis?


미안하지만 10.5.8 OS X 시스템에서 항상 동일한 결과를 제공합니다. 어쩌면이 있다 동의하기 때문에 매우 OS X 특정 문제는 다른 결과가 예상된다. 어쩌면 어디에서 해야하는지에 맞지 않을 수도 있습니다. 적어도 두 가지 예 (아래 참조)는 작동하지 않습니다. whereis ls와 whereis php는 항상 다음과 같은 결과를 제공합니다 ... 누구도 이것을 확인할 수 있습니까? Snow Leopard는 동일하게 작동합니까?
Wolf

그래, 내가이 질문을 한 이유는 알아
mk12

@Wolf은 여기의 예제 whichwhereis(맥 OS 시에라)에 제공하는 다른 출력 apple.stackexchange.com/questions/259047/...
마태 복음

@ mk12 나는 type우수 하다고 생각 합니다. 또한 정의 된 별칭, 함수 등에 대해서도 알고 있습니다.
phil294

답변:


121

학습 whereis하고 which사용하는 것은 whatis어떻습니까?

$  whatis which
which                (1)  - shows the full path of (shell) commands

$  whatis whereis
whereis              (1)  - locate the binary, source, and manual page files for a command

기본적으로 whereis"유용한 파일"을 which검색하고 실행 파일 만 검색합니다.

나는 거의 사용하지 않습니다 whereis. 반면에 which특히 스크립트에서 매우 유용합니다. which이 질문에 대한 답은 다음과 같습니다. 이 명령의 출처는 어디입니까?

$  which ls
/bin/ls

$  whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2

34
뭔지 몰랐어요, 고마워
mk12

1
이 질문은 (리눅스, BSD, 맥 OS X, ...을 포함하여) 모든 유닉스 변종에 적용 BTW, 나는 "OSX에"태그를 제거 할 것
데닐손 Sá 마이 아

유닉스로 변경
mk12

1
그것보다 더 많은 것이 있습니다. 내 시스템에서 whereis는 어떤 실행 경로를 반환합니다. 나는 실제로으로 실행하는 하나의 경로를 얻을 수 있습니다 whereis,하지의 하나 which.
Jordan Reiter

1
@JordanReiter : 할 수 없습니다! which실제 경로를 보여줍니다. 가리키는 경로가 가리키는 경로에 which대한 심볼릭 링크가 whereis아닙니까? 셸 별칭 일 수 있습니다. bash에서을 실행하십시오 type your_cmd_here.
Denilson Sá Maia

23

whereis 지정된 명령에 대해 표준 * nix 위치를 검색합니다.

which사용자 별 PATH를 검색합니다 (검색 할 위치 중 일부가 포함될 수 있고 다른 위치는 포함 whereis되지 않을 수 있음-PATH에 추가 한 경우 검색하지 않는 일부 위치도 포함될 수 있음 )


* nix 란 무엇입니까?
mk12

2
유닉스, 리눅스 등 (Mac OS X 등)

8
오, 하하, 나는 어떤 이유로 든 스택 오버플로가 유닉스에서 U를 검열한다고 항상 생각했다 ..
mk12

아니. 유사한 운영 체제 제품군을 지칭하기 위해 크리에이티브 와일드 카드 사용에 대한 일반적인 규칙입니다. ;)

6

매뉴얼 페이지 인용 :

어디 :

whereis는 지정된 파일에 대한 소스 / 이진 및 매뉴얼 섹션을 찾습니다.

예를 들면 :

$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz

즉, "php"실행 파일과 다른 것들 (man 페이지와 같은).


그리고 어느 :

현재 환경에서 실행될 파일의 ​​경로 이름을 반환합니다.

예를 들면 :

$ which php
/usr/bin/php

즉, "php"실행 파일 만.


1

환경 변수 PATH로 지정된 디렉토리에서 실행 파일 검색합니다. 그리고 발견되면이 실행 파일의 전체 경로 이름이 인쇄됩니다.

$ which ls
/ bin / ls
$ which ifconfig
$ # ifconfig는 루트의 PATH에만 존재하므로 출력이 없습니다.

여기서 시스템이 자동으로 구축 한 데이터베이스를 사용하여 실행 파일, 소스 파일 및 매뉴얼 페이지를 검색합니다.

$는 덜
적습니다 : / bin / less / usr / bin / less / usr / bin / X11 / less /usr/share/man/man1/less.1.gz

그러나 whereislocate 는 동일한 데이터베이스를 사용하지 않는 것 같습니다 . 나는 다음 소프트웨어를 설치하면 사용 whereis를 하고 찾아 본 소프트웨어를 검색 할 수 즉시. 결과적으로 whereis 는 찾을 수 없지만 이 소프트웨어와 관련된 일부 파일을 찾을 수 있습니다. 그들은 실제로 다른 데이터베이스를 사용합니까? 데이터베이스는 어떻게 작동합니까? -그럼, pedant가되기를 거부하는 것은 어떻습니까? :)


updatedb 명령을 실행 했습니까? 위치 내가 기억하는 한 그것에 의존
올리버 M Grech
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.