如何加载 shell 应用程序?

如何加载 shell 应用程序?

我创建了一个 shell 应用程序,最初是作为别名,但后来却失控了。

“app”提供了调用 yt-dlp(视频下载器)的 shell 函数,并将下载内容组织在可靠的目录结构中。

我目前使用 Termux(Android 终端模拟器)中的一行加载应用程序bash.bashrc.bashrc

其中一行用于bash.bashrc加载 shell 应用程序

. /path/to/main

main加载其余部分,其内容如下所示

. "$bin_dir/vars"
. "$bin_dir/common"
. "$bin_dir/logger"
. "$bin_dir/history"
. "$bin_dir/files"
. "$bin_dir/dlv"
. "$bin_dir/fvid"

这些都是 bash 脚本,它们向终端公开函数和变量,使用户可以使用它们。加载顺序很重要,dlv取决于common例如中的内容。

现在我想开源该项目并使其易于安装。我想知道我是否可以加载 shell 应用程序而无需在bash.bashrc.

我考虑过将脚本放入,$PREFIX/bin/但如果有人调用dlv,所有其他依赖项都尚未加载。

我可以将所有内容放入一个文件中,但我的目的是创建这些模块以保持代码整洁。

我想如果没有更优雅的解决方案,我可以写一个install.sh……echo ". /path/to/main" >> ~/bash.bashrc想法?

编辑:我放入了 main (加载程序)$PREFIX/bin,但是当我运行命令时,我的 shell 中没有任何函数和变量可用。我原本没想到。

答案1

我想出的解决方案是放弃能够运行main并运行的需求source main

我不清楚为什么只运行main包含source命令的命令不起作用,但这个解决方法还不错。

通过放入main$PREFIX/bin操作系统可以main找到$PATH.默认情况下,这将适用于所有 Termux 安装,就像$PREFIX/binTermux 中一样。$PATH

相关内容