Sum*_*Tea 13 linux bash shell command-line prompt
当我想通过键入 返回到 Linux 中的上层目录时cd ..,我输入了cd //. 令我惊讶的是,没有报告任何错误。更重要的是,提示变为username@hostname://$. ls表示我现在在根目录。
这是一个错误还是 shell 的一个特性?如果一个要素,是//的别名/?我的 shell 是 GNU bash,版本 4.1.5(1)-release (i686-linux-gnu)。
谢谢和最好的问候。
use*_*686 30
也可以考虑。
在 Linux 中,//没有任何意义——多个连续的斜杠在路径中的任何位置折叠为一个,包括开头。将目录更改为//将您放入/,正如运行所显示的readlink /proc/self/cwd那样;同样,/usr//local///bin折叠为/usr/local/bin。
但是,其他一些类 Unix 系统,例如 Cygwin 或旧的 Apollo Domain/OS,使用// 前缀作为网络路径,例如//fileserver/path/to/data. POSIX 也允许这样做。
由于各种原因,bash shell 自行跟踪当前目录(除了操作系统提供的跟踪),并且其中包含防止初始目录//折叠的代码,以保持与此类系统的兼容。“特性”是bash提供了对当前目录更直观的跟踪,例如,当cd进入符号链接时,bash会向您显示您期望的路径,即使内核不这么认为。“错误”是bash允许//甚至在不使用它的系统上。