是否有“可执行目录”之类的东西?

是否有“可执行目录”之类的东西?

在 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/localor/opt用于软件/二进制文件和/var配置,但这可能有点难以遵循,因为并不是每个人都遵循这些约定。不同发行版上的软件实现方式不同。

我知道我们已经尝试通过使用 Docker、Flatpak、AppImage 等对应用程序进行容器化来解决这个问题,它们都很棒 - 但我希望得到一些非常简单的东西。

拥有文件夹/apps$HOME/apps将其配置保存在相关文件夹中的应用程序是很好的 - 至少在表面上是这样。

答案1

您对 MacOS 的描述是 GUI 抽象(主要是查找器);不是操作系统功能或目录的实际属性。

因此,据我所知,Linux 上的任何图形文件管理器/shell 都不存在这种情况。有相当多的约定通常不适用于 Linux 上的应用程序,这使得这变得不可行。

相关内容