通过 Homebrew 模块化和分发 bash 脚本

Ped*_*ori 6 bash homebrew .bash-profile

语境

我在 my~/.bashrc中定义了一些函数,我想将它们转换为 Homebrew 包。目前,这些函数在我的命令行上充当自定义命令:

# .bashrc
function foo() {
    # do something interesting
}

# at terminal
$ foo
# => does the interesting thing
Run Code Online (Sandbox Code Playgroud)

方法

我已经使用brew create. 我目前的做法如下:

  1. 将函数定义移动到一个单独的文件中script,在一个目录中,brew-script
  2. 使可brew-script下载为 tarball,brew-script.tar.gz
  3. 让我的 brew 公式在终端会话开始时将文本附加到末尾~/.bash_profile以包含script

顾虑

  1. .bash_profile在 brew 配方中修改是不好的做法吗?(例如,当用 卸载时brew uninstall script, brew 应该以某种方式删除附加到的文本.bash_profile......解析.bash_profile似乎不是很有趣。)

  2. 是否已经建立了在 bash 脚本中包含函数的约定,以便它们可以从命令行使用?

  3. 简单地要求用户在他们的.bash_profile或 中添加一些文本是常见的.bashrc吗?

想要的结果

应该能够使用 brew 干净地安装,然后foo作为命令运行:

$ brew install script
$ foo
# => does the interesting thing
Run Code Online (Sandbox Code Playgroud)

(假设本地已经安装了brew公式。我会担心稍后审核并将公式推送到自制软件)

小智 0

不使用自制软件:

要将 bash 脚本放入某个文件(例如bashrc或任何其他名称的文件中),请输入以下行:

source "path/to/brew-script/script"
Run Code Online (Sandbox Code Playgroud)

在你的 bash 配置文件中的某个地方。

然后你只需确保通过运行. ~/.bash_profile或重新加载你的 bash 配置文件source ~/.bash_profile.

自制程序安装如何工作:

当你安装 homebrew 时,它会在 bash_profile 中添加一行,修改你的 $PATH 变量以包含 homebrew 安装存储库的路径,这样每当brew 安装某些东西时,就可以通过你的 PATH 找到它。如果您使用brew create,则必须将脚本上传到互联网上的某个位置,因为brew install 采用的参数是一个URL。即,如果我在 my_bash_function.tar.gz 创建脚本,那么我会这样做

brew create http://web.mit.edu/dianah13/www/my_bash_function.tar.gz
Run Code Online (Sandbox Code Playgroud)

它还模板化拉取请求以将您的包包含在自制程序的主存储库中。