至少在 bash 中,默认情况下set +P
会设置该选项,这使得某些命令(例如cd
、pwd
和制表符补全)遵循符号链接层次结构,而不是物理层次结构。但是,许多其他命令(例如ls
)仅遵循物理层次结构。
您可以set -P
让所有命令都遵循物理目录结构(或将其添加到文件~/.inputrc
中以在会话之间持久化)。但是,如果我想反过来,让所有(大多数?)命令都遵循符号目录结构,该怎么办?可以这样做吗?这是 bash 特有的吗?或者,有没有办法让事情相信符号目录是物理?需要说明的是,我正在寻找一种可以影响所有潜在功能行为的设置,而不是像 这样的变通方法readlink
。我能找到的最接近的方法是这个解决方法。
有关如何获得不愉快结果的示例,请继续阅读。这可能会导致令人困惑的行为,因为您可以通过 Tab 键完成正在运行的命令无法找到的文件/文件夹。例如(您可能必须set +P
先执行):
mkdir symtest1
mkdir symtest1/subdir
ln -s symtest1/subdir
touch youreinthebasedir #a lovely file to show where you're looking
touch symtest1/youreinsymtest1 #yet another
pwd #shows where you are
cd subdir
pwd #should show the same plus "/subdir"
ls ../ #should show the contents of "symtest1"
现在,使用制表符补全输入以下内容,
ls ../youre
tab
它将完成,
../youreinthebasedir
但是按回车键,您会收到一条错误,提示由于上述差异该文件不存在。