題 哪個/哪裡有差異


有什麼區別 which 和 whereis ?


95
2017-09-12 20:12


起源


對不起,但是我的10.5.8 OS X系統和哪裡 總是 給出相同的結果。也許這個 是 一個非常OS X特定的問題,因為我同意,預計會有不同的結果。也許哪裡不符合應該做的事情。至少這兩個例子(見下文)不起作用:whereis ls和whereis php總是給出相同的結果......任何人都可以證實這一點嗎? Snow Leopard的行為是否相同? - Wolf
是的,我知道,這就是為什麼我問這個問題。 - mk12
@Wolf這是一個例子 which 和 whereis 給出不同的輸出(在macOS Sierra上) apple.stackexchange.com/questions/259047/... - Matthew
@ mk12我覺得 type 是優越的。它還知道定義的別名,函數等 - Blauhirn


答案:


學習怎麼樣? 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

107
2017-09-12 20:38



不知道whatis,謝謝。 - mk12
順便說一下,我刪除了“osx”標籤,因為這個問題適用於所有unix變種(包括Linux,BSD,Mac OS X,......) - Denilson Sá Maia
改為unix - mk12
除此之外還有更多。在我的系統上,whereis和返回不同的可執行路徑。我只能獲得實際運行的路徑 whereis而不是那個 which。 - Jordan Reiter
@JordanReiter:不可能! which 顯示實際路徑。你確定路徑指向 which 不僅僅是指向路徑的符號鏈接 whereis?也許它是一個shell別名。在bash中,嘗試運行 type your_cmd_here。 - Denilson Sá Maia


whereis 在標準* nix位置搜索指定的命令。

which 搜索您的用戶特定路徑(可能包括搜索的某些位置,也可能不包括其他位置) - 它可能還包括某些位置 whereis 不會搜索你是否添加到PATH中)


21
2017-09-12 20:16



什麼是* nix? - mk12
Unix,Linux等(屬於Mac OS X等)
哦,哈哈,我一直以為堆棧溢出在unix中審查U,每當我看到它由於某種原因.. - mk12
不。只是一個相當普遍的創意通配符用於引用一系列類似操作系統的慣例。 ;)


引用他們的手冊頁:

哪裡 :

whereis找到源/二進制和   指定文件的手冊部分。

例如 :

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

即,“php”可執行文件,以及其他一些東西(如手冊頁)。


哪一個 :

它返回的路徑名   將在中執行的文件   當前的環境

例如 :

$ which php
/usr/bin/php

即,只有“php”可執行文件。


6
2017-09-12 20:17





哪一個 在環境變量PATH指定的目錄中搜索可執行文件。如果找到,將打印此可執行文件的完整路徑名。

$ ls
  /斌/ LS
  $ if ifconfig
  $#無輸出,因為ifconfig只存在於root的PATH中。

哪裡 使用系統自動構建的數據庫搜索可執行文件,源文件和手冊頁。

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

但似乎是這樣 哪裡 和 定位 不要使用相同的數據庫。當我安裝軟件然後使用 哪裡 和 定位 立即搜索此軟件。結果是 哪裡 可以找到一些與此軟件相關的文件 定位 不能。他們真的使用不同的數據庫嗎?數據庫如何工作? - 好吧,拒絕成為一名學生怎麼樣? :)


1
2018-01-24 15:09



你運行updatedb命令了嗎?就我記憶而言,定位依賴於它 - Oliver M Grech