使用 CDPATH 和符号链接打开文件

bug*_*bug 3 shell directory path symlink files

为了快速移动,我添加了一个指向 CDPATH 的路径,其中包含指向不同位置的符号链接。我通过将以下行添加到 .bashrc 来做到这一点:

export CDPATH=~/symlinks
Run Code Online (Sandbox Code Playgroud)

使用目录时,一切正常,我可以从任何地方访问符号链接文件夹。

例如,如果我这样做:

$ ln -s ~/path/to/folder ~/symlinks/folder
Run Code Online (Sandbox Code Playgroud)

然后我可以写:

$ cd folder
Run Code Online (Sandbox Code Playgroud)

进入符号链接文件夹,无论我当前的目录如何。

但是,当我创建一个文件的符号链接,然后尝试使用编辑器打开它时,我会得到一个空文件,除非我在符号链接目录中。

例如,如果我这样做:

$ ln -s ~/path/to/file/filename ~/symlinks/filename
Run Code Online (Sandbox Code Playgroud)

然后写:

$ kwrite filename
Run Code Online (Sandbox Code Playgroud)

如果我不在符号链接文件夹中,我会得到一个空文件。

我想从任何地方访问该文件,我该如何实现?

Jen*_*y D 5

简单的答案是你不能。

CDPATH 所做的是,如果您键入“cd 文件夹”,它首先会检查您的 CDPATH 中是否存在“文件夹”;如果没有,它将检查您当前所在的文件夹。但这特定于目录更改;kwrite 不检查 CDPATH 和 AFAIK 没有配置选项使其在任何特定目录中查找。

您可以做的是制作一个小的 shell 脚本来替换 kwrite,如下所示:

#!/bin/sh

FILE=$1

if [ -f "$HOME/symlinks/$FILE" ] 
then
   kwrite "HOME/symlinks/$FILE"
else
   kwrite "$FILE"
fi
Run Code Online (Sandbox Code Playgroud)

然后运行脚本(您可以将其命名为例如“akwrite”)而不是直接运行 kwrite。