首页 > 解决方案 > 将 bash 函数自动添加到 $PATH 或 bash shell

问题描述

有没有办法将 bash 函数添加到 $PATH 或 bash shell,而不需要最终用户手动获取它们?

换句话说,如果我们有一个只导出 bash 函数的软件库,我们通常要求最终用户使用

. "$HOME/.the_scripts/"*.sh

然后使用它们。但是有没有办法以某种方式将 bash 函数放入 shell,而无需用户向 ~/.bashrc 或 ~/.bash_profile 等添加一行代码?

我想做什么?我试图避免用户添加调用以获取他们刚刚安装的库的 bash 脚本。

标签: bashshellsh

解决方案


我得到的一个建议是将容器脚本写入一个文件夹,该文件夹已经在 $PATH 中。

假设我有一个这样的脚本:

#!/usr/bin/env bash

my_func(){
   echo "this is my func, $1, $2, $3"
   export foo="my_func"
}

my_func a b c

我可以将该脚本写入 $PATH 中的文件夹,然后执行该脚本,然后该脚本将调用 bash 函数。

不确定这是一个多么伟大/通用的解决方案,但它适用于我认为的某些用例。如果您想将 env 变量导出到当前 shell 等,这将不起作用,因为据我从命令行/当前脚本所知,bash 函数将在子 shell 中运行。


推荐阅读