Shell
shell 如何解釋 ././command-name?
hello2
我在目前工作目錄中有一個名為的二進製文件。要執行它,我需要按下
./hello2
它並顯示輸出。但是當我使用以下命令
././hello2
時它仍然有效。你能解釋一下shell是如何解釋這個命令的嗎?
當你執行命令時
$ ./hello2
hello2
shell在目錄中查找文件.
,即在目前目錄中。然後它根據一些規則執行腳本或二進製文件(在這種情況下是無趣的)。命令
$ ././hello2
還會使 shell 執行該文件。
這是因為
.
和./.
是同一個目錄。每個目錄都有一個
.
目錄條目。此條目對應於目錄本身。所以說和說等等./
是一樣的。././``././././
唯一的區別是系統可能需要做一些額外的目錄查找(除非 shell 很聰明並且發現了明顯的簡化)。
每個目錄也有一個
..
指向其父目錄的條目。這意味著如果目前目錄被呼叫
alamin
,那麼下面的程式碼也會執行該文件:$ ../alamin/hello2
一樣
$ ../alamin/./hello2
和
$ .././alamin/./hello2
根目錄 ,
/
是一個特例。它的..
目錄條目與其.
目錄條目相同。這意味著您不能使用/..
.另請參閱:文件夾的連結數量不反映真實狀態?