找到新安装的应用程序的可执行文件 "Beyond Compare"

Locate an executable file of newly installed application "Beyond Compare"

一些源代码管理查看器允许用户选择非默认应用程序来解决合并期间的冲突。为此,我需要指定所需工具的位置,因此我从 Ubuntu Software 安装了 Beyond Compare。但是我找不到它的安装基础文件夹。

试图通过使用 ps -ef 检查 "Beyond Compare" 的 运行ning 实例的属性来解决这个问题。事实上,运行ning 进程之一从文件中产生 /snap/bcompare/90/usr/bin/bcompare 来自类型 bash 脚本。

我假设这是在应用程序列表中双击 Beyond Compare 图标时调用的文件。

我打开文件看到它指向$SNAP/usr/lib/beyondcompare/Bcompare但是我找不到$SNAP的设置。

所以我在后缀(/usr/lib/beyondcompare..)中搜索应用程序名称,但一无所获。

最终我在 /snap/bin/bcompare

中找到了丢失的可执行文件 Link
zohark@ubuntu:/snap/bin$ ls -ltr /snap/bin/bcompare 
lrwxrwxrwx 1 root root 13 Nov 14 00:21 /snap/bin/bcompare -> /usr/bin/snap

当我直接 运行 时,我无法比较,但是如果我 运行 链接文件 /usr/bin/snap 我得到了捕捉工具。

我的问题是

  1. 为什么安装程序选择此工具 /usr/share/application 之外的位置?

  2. 在哪里可以看到双击应用程序到 运行ning 阶段的流程?它在哪里设置一些环境变量,如 $SNAP?.

谢谢

  1. 自版本 16.04 起,Canonical 决定在现有的 deb/apt 之外,将他们自己的包管理系统 snap 引入 Ubuntu德比安。它主要用于非自由(非开源,即专有)软件,例如 Beyond Compare,以及其他从未添加到 Ubuntu deb* 存储库的软件。

我希望他们决定将 snap install 包安装到默认位置以外的其他地方,因为它有助于防止某些类型的冲突,这些冲突可能由同一目录中不同包管理系统管理的文件共存(即).


  1. 应用程序图标实际上对应.desktop个文件。这些文件通常放置在文件管理器和桌面环境能够找到它们的专用文件夹中。我知道的文件夹如下:

    • /usr/share/applications
    • /var/lib/snapd/desktop
    • ~/.local/share/applications
    • /etc/xdg/autostart/

下面的命令应该能够找到您系统上的所有 .desktop 个文件。

find /opt /snap /usr ~ /etc /lib* /srv /var /sbin /bin -name '*.desktop' 2>/dev/null

.desktop 文件如下所示:

$ cat /usr/share/applications/filezilla.desktop
[Desktop Entry]
Name=FileZilla
GenericName=FTP client
GenericName[da]=FTP-klient
GenericName[de]=FTP-Client
GenericName[fr]=Client FTP
Comment=Download and upload files via FTP, FTPS and SFTP
Comment[da]=Download og upload filer via FTP, FTPS og SFTP
Comment[de]=Dateien über FTP, FTPS und SFTP übertragen
Comment[fr]=Transférer des fichiers via FTP, FTPS et SFTP
Exec=filezilla
Terminal=false
Icon=filezilla
Type=Application
Categories=Network;FileTransfer;
Version=1.0

对于位置不寻常的应用程序,Exec= 条目通常是绝对路径,因此您知道要执行的文件的实际位置。 Visual Studio 代码是这样的:

$ cat /usr/share/applications/code.desktop 
[Desktop Entry]
Name=Visual Studio Code
Comment=Code Editing. Redefined.
GenericName=Text Editor
Exec=/usr/share/code/code --unity-launch %F
Icon=code
Type=Application
StartupNotify=true
StartupWMClass=Code
Categories=Utility;TextEditor;Development;IDE;
MimeType=text/plain;inode/directory;
Actions=new-empty-window;
Keywords=vscode;

[Desktop Action new-empty-window]
Name=New Empty Window
Exec=/usr/share/code/code --new-window %F
Icon=code

如果您想知道变量 $SNAP 的值,我希望您能做的最好的事情就是修改脚本并在顶部包含如下一行。

echo 'SNAP='"$SNAP" > /tmp/SNAP_VALUE

然后 运行 应用程序并检查文件 /tmp/SNAP_VALUE,使用 gedit 或从终端:

more /tmp/SNAP_VALUE