在 MacOS 中,您可以使用后缀命名文件夹.app
,并且可以根据内部文件夹结构约定将其作为应用程序从 GUI 启动。
Linux 中存在这样的东西吗?
例如,我可以将一个目录标记为可执行文件吗?当尝试执行该目录时(无论是从 CLI 还是从 GUI),Linux 将./main
在内部查找(或类似的)来执行。
编辑:
这主要只是出于好奇,但就行为而言,我希望知道是否有某种方法可以用一些元数据标记文件夹,告诉 Linux 将其用作内部保存的二进制文件的代理 - 类似于:
mkdir hello-world.app
# Create executable inside folder
echo "#!/bin/bash" > hello-world.app/bin/main
echo "echo Hello World" >> hello-world.app/bin/main
# Add some kind of meta-data to tell Linux what to do when executing folder
echo "execute=bin/main" > hello-world.app/app_manifest
# Mark as executable
chmod +x ./hello-world.app
# Run folder
./hello-world.app
# "Hello World"
我的想法是,这将是一种方便、省力的方式来分发应用程序及其依赖项、文档,同时也可以作为配置的方便目的地。
我想如果一个软件需要一个与系统上安装的动态库不同的动态库,您只需下载适当的动态库并将其放入hello-world.app/lib
,二进制文件会更喜欢本地库而不是系统库。
我知道 Linux 的约定是使用/usr/local
or/opt
用于软件/二进制文件和/var
配置,但这可能有点难以遵循,因为并不是每个人都遵循这些约定。不同发行版上的软件实现方式不同。
我知道我们已经尝试通过使用 Docker、Flatpak、AppImage 等对应用程序进行容器化来解决这个问题,它们都很棒 - 但我希望得到一些非常简单的东西。
拥有文件夹/apps
和$HOME/apps
将其配置保存在相关文件夹中的应用程序是很好的 - 至少在表面上是这样。
答案1
您对 MacOS 的描述是 GUI 抽象(主要是查找器);不是操作系统功能或目录的实际属性。
因此,据我所知,Linux 上的任何图形文件管理器/shell 都不存在这种情况。有相当多的约定通常不适用于 Linux 上的应用程序,这使得这变得不可行。