我创建了一个 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/bin
Termux 中一样。$PATH