找到新安装的应用程序“超越比较”的可执行文件

时间:2018-11-14 11:56:30

标签: linux git ubuntu beyondcompare

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

试图通过使用ps -ef检查正在运行的“超越比较”实例的属性来解决这个问题。实际上,从文件中产生了一个正在运行的进程 /snap/bcompare/90/usr/bin/bcompare,来自bash脚本类型。

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

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

因此,我在后缀(“ / usr / lib / beyondcompare ..”)中搜索了应用程序名称,但未找到任何内容。

最终,我在/snap/bin/bcompare

中找到了丢失的可执行链接。
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. 在哪里可以看到双击应用程序到运行阶段的流程?它在哪里设置了一些环境变量,例如$SNAP?。

谢谢

1 个答案:

答案 0 :(得分:1)

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

我希望他们决定将快照安装软件包安装到默认位置以外的其他位置,因为它有助于防止某些冲突,这些冲突可能是由同一目录中不同软件包管理系统管理的文件的共存引起的。


  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

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

more /tmp/SNAP_VALUE