代码之家  ›  专栏  ›  技术社区  ›  Alexander Mills

自动向$path或bash shell添加bash函数

  •  0
  • Alexander Mills  · 技术社区  · 6 年前

    有没有一种方法可以将bash函数添加到$path或bash shell中,而不需要最终用户手动获取它们的源代码?

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

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

    然后使用它们。但是有没有一种方法可以让bash函数以某种方式进入shell,而不需要用户向~/.bashrc或~/.bash_profile等文件添加一行代码呢?

    我想做什么? 我试图避免用户需要为他们刚刚安装的库添加对源bash脚本的调用。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Alexander Mills    6 年前

    我得到的一个建议是编写一个容器脚本,到一个文件夹中,该文件夹已经在$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中运行。

        2
  •  1
  •   glenn jackman    6 年前

    如果你读到 Bash Startup Files ,你注意到了 /etc/profile 是正在处理的文件之一。如果您阅读该文件,您将看到它在/etc/profile.d中提供了所有的*.sh文件

    如果您可以在/etc/profile.d中安装脚本库,那么这些函数将可用于所有交互式登录shell会话。