获取应用程序路径?

如何确定用户在启动器中显示的应用程序的路径?
这是为非程序员或专家设计的,因此终端命令并不适合他们。原因是:我们需要让用户能够将文件/文件夹拖放到我们的应用程序上,这是Ubuntu中完全缺失的标准操作系统功能。

你要求非程序员或专家的答案。Pilot6的回答非常接近你想要的 - 通常每个应用程序的.desktop文件位于/usr/share/applications,但并不总是如此。你是否考虑过一个我可以编写并展示如何设置的shell脚本,或者你根本不想处理命令行?该脚本可以确定每个文件的位置和可执行二进制文件的确切位置。 - Sergiy Kolodyazhnyy
3个回答

前往/usr/share/applications~/.local/share/applications,右键点击应用图标并点击“属性”。

我没有看到一个不能在终端中运行命令的人需要路径的理由。


2~/.local/share/applications目录中可能还有特定用户的.desktop文件。 - Byte Commander
这是一个罕见的情况,主要发生在手动安装或与Wine相关的情况下。 - Pilot6
点赞,但我同意Byte Commander的观点 - 你应该提到其他可能的位置。例如,Microchip的MPLAB IDE将所有文件安装在/opt目录中。 - Sergiy Kolodyazhnyy
/opt不适用于此情况。它可以作为应用程序的路径,但是.desktop文件不能放在那里。Unity将无法识别它。 - Pilot6
1感谢您的反馈。没有终端的原因是Ubuntu中完全缺少一项标准操作系统功能,即能够将文件/文件夹拖放到应用程序上。 - xamiro
@Serg:pilot6是对的,/opt目录中的应用程序仍然会在/usr/share/applications中列出。 - xamiro
好的,看起来是这样的。 - Sergiy Kolodyazhnyy
还有至少/usr/local/share/applications//usr/share/gnome/applications。看一下update-desktop-database - carandraug
1人们需要路径的原因是,即使开发者费心制作了图形用户界面,他们仍然会在其中放置一个文本字段,要求用户提供例如“Google Chrome的路径”。这很糟糕,但它仍然比终端好得多。 - Andreas
另一种情况是,我尝试在命令行中运行Texmaker,结果出现了一些库链接问题,所以根本无法运行。但是当我通过仪表盘进入Texmaker时,它却正常工作... 这真的很奇怪... 所以我需要弄清楚原因。这就是为什么有时候不能在命令行中运行应用程序,而需要从仪表盘中指定路径的一个原因。 - ArtificiallyIntelligence

在18.04及更高版本中,通过点击Dock左下角的9个点图标访问Dash,并通过点击应用程序图标来启动应用程序。启动系统监视器并记下刚刚打开的应用程序的确切拼写名称。打开终端并输入:
type application-name
在Ubuntu 14.04及更高版本中,获取应用程序路径只需几秒钟。在Dash中搜索应用程序,然后将应用程序图标拖到终端中。应用程序的完整路径将自动显示在终端中。将图标拖到终端还会显示任何具有图标的文件、文件夹、存档或其他内容的路径。
在Ubuntu 20.04及更高版本中,无法从桌面拖放文件或目录,但可以从其他位置进行拖放,包括从文件管理器中的桌面进行拖放。

2很棒的答案!运作良好。 - Nathan B
在19.10版本中对我来说无法正常工作,首先是因为启动器是全屏的,所以我无法将应用程序拖到终端上。而且当我从Dock栏拖动应用程序到终端时,它也不会显示在终端中。 - Waleed Dahshan

你必须去一个终端,我担心... 这是一个例子:
whereis gedit

它的输出为:

gedit: /usr/bin/gedit /usr/share/gedit /usr/share/man/man1/gedit.1.gz

/bin/路径是可执行文件所在的位置,/share/路径是包含一些应用程序附属文件的文件夹,而/man/路径则是gedit的手册。
希望这回答了你的问题。

2这告诉你 gedit 文件的位置,你可以从终端访问它们,但它并不告诉你启动器项将运行什么命令。 - Byte Commander
1嗨,就我所理解,问题是关于应用程序在系统中的路径。xamiro并没有提到他想知道运行程序的命令。 - Matteo S.