當我在終端機中工作時,我將 while 拼錯cd
為 root ( /
)。不小心,我輸入//
並進入了終端:
root@weblocalhost://#
當我輸入時pwd
,我得到回應,//
但是當我輸入時,ls -s
我得到與/
目錄中相同的清單。
當您輸入超過 2 時,即///
您得到:
root@weblocalhost:/#
除 2 外始終/
為 1 //
。
答案1
/
相當於//
從POSIX 規範(強調):
3.267 路徑名
用於標識文件的字串。在 POSIX.1-2008 的上下文中,路徑名稱可能限制為 {PATH_MAX} 位元組,包括終止空位元組。它具有可選的起始
<slash>
字符,後跟零個或多個由<slash>
字符分隔的文件名。路徑名可以選擇包含一個或多個尾隨<slash>
字元。多個連續<slash>
字元被視為與 1 相同<slash>
,但恰好有兩個前導字元的情況除外<slash>
。
和:
4.12 路徑名解析
...
由單一組成的路徑名<slash>
應解析為進程的根目錄。空路徑名將無法成功解析。如果路徑名以兩個連續<slash>
字元開頭,則前導<slash>
字元後面的第一個元件可以以實現定義的方式解釋,儘管兩個以上前導<slash>
字元應被視為單一<slash>
字元。
有關異常(cygwin 和目錄)的精彩討論,請參閱:linux如何處理多個連續的路徑分隔符號(/home////使用者名稱///檔案)?
答案2
您可以為目錄添加多個斜杠,但它不會改變任何內容。例如,這三個命令都執行相同的操作:
cd /home
cd /home/
cd /home//
在執行這些操作後,我目前的工作目錄將設定為 /home (使用 進行檢查pwd
)。
我猜測您已將提示配置為做一些聰明的事並且您遇到了意想不到的行為。當你的時候你會得到什麼echo $PS1
?
查看unix.stackexchange.com 上的此評論這可以解釋它。