当我想通过键入返回Linux的上级目录时cd ..,我会输入错误cd //。令我惊讶的是,没有错误报告。更重要的是,提示变为username@hostname://$。ls表示我现在在根目录下。
这是Shell的错误还是功能?如果是功能,是//的别名/吗?我的外壳是GNU bash,版本4.1.5(1)-发行版(i686-linux-gnu)。
谢谢和最好的问候。
当我想通过键入返回Linux的上级目录时cd ..,我会输入错误cd //。令我惊讶的是,没有错误报告。更重要的是,提示变为username@hostname://$。ls表示我现在在根目录下。
这是Shell的错误还是功能?如果是功能,是//的别名/吗?我的外壳是GNU bash,版本4.1.5(1)-发行版(i686-linux-gnu)。
谢谢和最好的问候。
Answers:
也可以考虑。
在Linux中,//没有任何意义–多个连续的斜杠在路径中的任何位置(包括开头)都折叠为一个。更改目录以//将您置于/,如运行所示readlink /proc/self/cwd。同样地,/usr//local///bin折叠为/usr/local/bin。
但是,某些其他类似Unix的系统(例如Cygwin或旧的Apollo Domain / OS)使用// 前缀用于网络路径,例如//fileserver/path/to/data。POSIX也允许这样做。
由于各种原因,bash shell会自行跟踪当前目录(除了操作系统提供的跟踪),并且其中包含防止初始文件//折叠的代码,以保持与此类系统的兼容性。bash的“功能”是bash提供对当前目录的更直观的跟踪,例如,当cd进入符号链接时,bash会向您显示您期望的路径,即使内核认为不是这样。“错误”是bash//即使在不使用它的系统上也允许。
zsh允许cd //,但足够聪明,只显示/提示字符串即可。
我会去提示显示“错误”。
路径“ /”,“ //”,“ /////////////////////”,...具有相同的含义:“ /”。您可以在Unix路径中的任意位置添加任意数量的“ /”,但这不会改变其含义。
“错误”在这里更多与以下事实有关:提示使用显示路径中最后键入的有效字符,而不是实际的“ pwd”。
无论如何有趣;)
//提示中的提示是提示环境变量($PS1)的副作用-如何PS1定义?
$PS1变量定义为[\u@\h \W]\$。设定有问题吗?
/当pwd =时只能得到一个/。我想知道您是否正在做任何额外的工作来获取目录。被$PROMPT_COMMAND设置?
echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#HOME/~}"; echo -ne "\007"。您能否详细解释一下?我对这两个变量不太熟悉。谢谢。