使链接打开目标文件,而不是链接位置的文件

使链接打开目标文件,而不是链接位置的文件

抱歉,标签太多了。我不知道哪个标签适用。请删除不相关的标签,然后删除此行。或者发表评论,我会自己做。

背景

我想将一个链接放在/home/myname/some/path/file.tex我桌面上的一个文件上。这个 TeX 文件调用了其中的其他 TeX 文件。现在,当我打开位于桌面上的链接(我的 TeX 编辑器)时,它说我打开了文件/home/myname/Desktop/file.tex。我无法编译此文件,因为主 TeX 文件所依赖的其他 TeX 文件不在程序期望的位置。

主要问题

如何使链接文件在实际位置而不是桌面上打开目标文件?

编辑

宣传的解决方案这里无法按预期工作。使用

#!/bin/bash
exec /home/myname/some/path/file.tex "$@"

我明白了

/tmp/geany_run_script_JVX1HZ.sh: 7: /tmp/geany_run_script_JVX1HZ.sh: ./open-file.sh: Permission denied


—----------------
(program exited with code: 126)
Press return to continue

open-file.sh包装脚本位于我的桌面上的什么位置?

编辑2

虽然,如果我打开终端并执行

chmod a+x ./open-file.sh

并更改exectexstudio,这恰好是我用来打开文件的程序.tex,然后我可以打开终端并执行

bash open-file.sh

它将启动 TeXStudio,并将所需文件加载到所需目标位置。我仍然无法在桌面上双击 open-file.sh,因为这将打开我的文本编辑器,让我编辑 bash 脚本。我想双击脚本文件open-file.sh并让 TeXStudio 打开我的file.tex文件。

### 编辑 3

这个问题,我推断我做的一切都是正确的,文件应该是可点击的,点击后即可执行。不幸的是,事实并非如此。我认为我的权限是正确的,据我所知

在此处输入图片描述

同样如此

-rwxr-xr-x me me 94 Apr 27 12:00 open-file

答案1

这是由于符号链接的语义所致。虽然你无法改变符号链接的处理方式,但你可以使用链接类型桌面文件

~/Desktop创建一个名为的文本文件,file.tex.desktop 其中包含以下内容:

[Desktop Entry]
Name=file.tex
Type=Link
URL=file:///home/myname/some/path/file.tex

这将打开路径

/home/myname/some/path/file.tex

使用工作目录中的默认文本编辑器

/home/myname/some/path/

无论桌面文件位于何处。

您需要调整NameURL值以使其合适,但其他一切可以保持不变。这是一个实际的工作示例:

[Desktop Entry]
Name=Link to utf8test.tex
Type=Link
URL=file:///usr/share/texlive/texmf-dist/tex/latex/base/utf8test.tex

请注意,URL 必须是正确的file://网址. 有些文件管理器会帮助您生成这些文件 如果您不想手动操作的话。

有关的:

答案2

我不知道如何使链接本身像这样工作,但有一个相对简单的方法可以完成它。

问题似乎是,调用来处理数据的程序没有运行,并且其工作目录没有设置为数据文件的位置。

不要链接文件本身,而是编写启动器脚本并将文件位置作为参数传递给它。然后从桌面条目链接到该脚本。

至少在 KDE 中,这更容易做到,只需将一个条目添加到应用程序启动器中,并按您想要的方式设置所有参数,然后将该条目从菜单拖到桌面即可。它有一堆占位符变量,可让您修改命令,甚至可让您指定要使用的工作目录。

这可以简单也可以花哨。从简单的开始:

#!/bin/bash
## Usage: launcheroo working-directory data-file
## defending this script is left as an exercise for the reader
## ... or you can ask in the comments ;)
cd "$1"
myprog "$2" ## or your more fancy exec that will figure out
            ## what program to run by itself

调用如下:

launcheroo path-to-data-files data-file

这处理了最基本的用法,并说明了方法,但不处理任何错误,如坏参数或缺失参数

为了更加花哨,您可以使用dirname或 bash 参数编辑从指定的数据文件路径中提取路径,而不是将其作为单独的参数传递。

完成此操作的一种快速而简单的方法(尤其是为了测试其工作原理)就是编辑桌面图标以运行

cd where-the-files-are ; exec ...

因为这是 Linux,所以可能还有很多其他方法可以做到这一点。

如果您将文件添加为桌面上的图标,您可以直接编辑其 .desktop 文件并让它执行各种有趣的操作。我还没有做太多这些。

刚刚看到这个回答它与我的本质上是一样的,只是旋转略有不同。

相关内容