mbo*_*nin 5 bash symlink autocomplete
我有以下目录结构:
base/
dir/
subdir/
link -> ../dir
Run Code Online (Sandbox Code Playgroud)
现在,如果我CD到目录/链接并键入:
cd ../subd[tab]
Run Code Online (Sandbox Code Playgroud)
我得到:
cd ../subdir[space]
Run Code Online (Sandbox Code Playgroud)
我会理解自动完成是否失败(因为它将完成路径并查找base /而不是dir /)。
我也将了解它是否cd ../subdir/以/结束自动完成(因为它将解释..为go up one leveldir /并搜索到dir /)。
但是我不了解两者之间的实际行为。理想情况下,我希望bash表现为2。(自动完成cd ../subdir/)。我正在使用fedora 14,bash版本4.1.7(1)。任何想法如何做到这一点?
稍微挖掘一下源代码后,看起来这有点复杂。实际问题是 bash 允许工作目录内的符号链接(请参阅 pwd -L 和 pwd -P)和 readline 之间的混合,如果匹配不在物理目录中,则无法确定匹配的类型
s = (nontrivial_match && rl_completion_mark_symlink_dirs == 0)
? LSTAT (filename, &finfo)
: stat (filename, &finfo);
Run Code Online (Sandbox Code Playgroud)
stat() 失败,因为 ../ 被理解为相对于物理路径而不是逻辑路径。readline 无法确定这是一个目录,因此不会附加最后的“/”。这里描述了一个非常相似的问题
所以我想我现在可以忍受现有的行为......
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |