3

我有一个桌面快捷方式,例如/home/user/Desktop/myfolder/link.desktop它调用bash位于其他地方的脚本,例如/tmp/myscript.sh

在我的脚本中,如何找到调用我的脚本的快捷方式的路径?有可能吗?

我真正想要实现的是快捷链接所在的子文件夹,例如/home/user/Desktop/myfolder/subfolder. 在我的脚本中,我希望能够访问子文件夹。

我已经尝试过,但无论快捷方式图标在哪里,readlink -f它都会返回。/home/user

我无法设置工作路径,因为快捷链接已生成并动态放置在不同位置。

4

1 回答 1

1

好吧,至少你可以在你的脚本中做这样的事情:

find / -iname '*desktop' -exec fgrep -l $0 \{\} \; 2>/dev/null

这将遍历您的文件系统并在每个.desktop文件中搜索您的脚本...但是请注意,这可能会产生误导,因为有人可以在.desktop...中添加注释,因此您可以先创建一个搜索字符串^Exec=/PATH/TO/$0,然后使用egrep而不是fgrep.

或者您可以执行复制功能,在将.desktop文件复制到其位置并将其新位置作为参数添加到该Exec行时编辑文件,例如:

mycp() {
    sed "s/^Exec=.*/& $2/" $1 > $2 
}

或者(我会同意)根据规范%k使用你的Exec行中的参数。

于 2012-04-25T08:45:08.923 回答