如何在 ubuntu 桌面上双击打开文件时更改工作目录?

如何在 ubuntu 桌面上双击打开文件时更改工作目录?

想要通过双击打开一个文件(.pdb 文件:蛋白质结构格式,没关系)。

“打开方式”手动指示使用 Ubuntu Tweak 执行“pymol”(打开.pdb 格式的程序)。

然而,我发现工作目录$HOME。

与其他文件一样我打开文件的目录至关重要的是我想要访问它们。

我猜测“pymol”是在 $HOME 上执行的,而“pdb 文件”(双击的文件)的绝对路径作为参数传递。

我想这是一个普遍的问题,并提出一个问题:

我怎样才能让系统改变“工作目录”“我单击文件的目录”并执行一个程序?

答案1

尽管已经过去了很多年,但以下方法对我来说仍然有效:

Exec=bash -c 'cd "%k" && ~/path/to/your/file'

%千为您提供刚刚启动的启动器目录的路径。

答案2

以上解决方案均不适用于我的 Debian。也%d已弃用。请参阅桌面入门规格

所以我使用以下 bash 脚本来运行 pymol。首先,您需要创建以下 bash 脚本文件并将其保存在 中/usr/local/bin/run_pymol.sh。我将文件保存在 中,/usr/local因为 似乎xdg-open不理解 HOME 目录是什么等等。

#!/usr/bin/env bash
# change working directory
cd `dirname $1`
# run pymol
/usr/bin/env pymol $@

第二步,赋予该文件可执行权限。打开终端并输入以下命令来授予权限并确认。

% chmod +x /usr/local/bin/run_pymol.sh
% run_pymol.sh

最后,按如下所示修改您的pymol.desktop文件,然后您的 pymol 将在第一个给定文件所在的目录中启动。

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=PyMOL Molecular Graphics System
GenericName=Molecular Modeller
Comment=Model molecular structures and produce high-quality images of them
Type=Application
Exec=/usr/local/bin/run_pymol.sh %U
TryExec=pymol
Icon=pymol
MimeType=chemical/x-pdb
Categories=Education;Science;Chemistry;

希望它能帮助你们:-)

答案3

我不明白为什么上面的解决方案得到如此多的赞成,它做了完全不同的事情。它将工作目录更改为 .desktop 文件所在的目录,而问题是将工作目录更改为打开文件的目录。

我的解决方案:

Exec=/bin/bash -c 'cd $(dirname $0) && micro $0'

请记住,为 .desktop 文件设置环境变量是不同的,如下所示

Exec=env CPATH=../include /bin/bash -c 'cd $(dirname $0) && micro $0'

答案4

与@tuxForLife 的方法类似但不完全相同:

将当前目录作为第一个参数传递:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Exec=/usr/bin/bash /home/frank/bin/checkExtensionless.sh "%k"
Name=checkExtensionless
Icon=system-upgrade

checkExtensionless.sh

我遇到过这种情况:如果文件名中有空格,则路径会用单引号引起来'/somewhere/my stuff/',所以我必须删除它们,然后使用 cd 进入它。(builtin只是过于热衷于绕过 .bashrc 中任何花哨的 cd 包装器)

#!/usr/bin/env bash

prunedQuotes="$(echo $1 | sed -e "s/'//g")"
workdir="$(dirname "$prunedQuotes")"
builtin cd "$workdir"
<your actual script>

相关内容