Shell
哪個 2 字母 POSIX 命令與所有其他命令不同?
我接受了實習面試,我得到了和這個一樣的問題:http ://www.glassdoor.com/Interview/Which-2-letter-POSIX-command-is-different-from-all-the-others- QTN_498236.htm
答案是正確的,它是
cd
(正如面試官告訴我的那樣)。我對此感到非常困惑。為什麼cd
不一樣?我跟面試官說不一樣,因為它可能不是由“shell”實現的,但我當時不知道我在說什麼。
這當然是一個主觀問題,有許多似是而非的答案。
的一個特點
cd
是它必須由 shell 本身實現:它不能是外部命令(在單獨的程序中執行的命令)。cd
更改 shell 程序的工作目錄,只有 shell 本身可以做到這一點。這是一個糟糕的問題,因為
cd
不是唯一這樣的命令。bg
,fc
,fg
在同一條船上。cd
在其他人之前存在,這是使其獨一無二的一種方式。另一個可能的答案是
dd
,它的選項語法完全不同於任何其他命令(它是從 IBM 借來的)。當然,您可以為許多其他命令設置參數,例如
rm
(唯一一個純破壞性的 2 字母命令)、su
(唯一一個絕對必須是 setuid rootat
的兩個字母命令)、(唯一一個通常是 setgid),sh
(它是 shell 本身,這使得它與其他特殊用途的命令不同),ps
(在 unice 之間變化最大的兩個字母命令)等。