如何正确部署/安装脚本?

如何正确部署/安装脚本?

我开发了几个实用脚本来解决我的团队日常工作的特定问题。

到目前为止,我在同事的笔记本电脑上部署脚本的操作如下:

  • 每个解决方案都有一个main.sh脚本(以及其他脚本和支持文件)
  • 在用户的主文件夹中创建一个文件夹并将文件放在那里
  • 根据 Linux 发行版,将别名添加到.bashrc.bash_aliases,指向main.sh脚本
  • 将自动补全文件复制到/etc/bash_completion.d/(补全文件名与别名加扩展名相同.auto)。
  • 复制手册页,然后/usr/share/man/man1/对其进行 gzip 压缩(man 文件名与别名加扩展名相同.1)。

我想创建一个安装程序,但别名部分很棘手。

  • 是否有更好的选择也可以实现自动化(安装程序)?
  • 也许放置一个到 main.sh 文件的软链接/usr/local/bin而不是创建别名?
  • 这有最佳实践吗?

答案1

嗯,在一家公司工作并不是很难。在里面将功能放入 shell 函数中。例如:

fn(){ 
    echo first time called\!
    fn(){ 
        echo not the first time called\!
    }
}
fn; fn; fn

...将打印...

first time called!
not the first time called!
not the first time called!

您还可以在函数、源文件或任何方式中定义 shell 别名 - 您可以这样做漂亮的您还可以在提示符下执行与当前 shell 状态相关的许多操作除了影响其位置参数(尽管这也可以用 es 解决alias

所以可以将您的安装来源作为一个好主意.fn.name (管他呢)文件,然后在 rc 文件中调用它们一次 - 其中对函数的初始调用根据需要处理其自己的所有设置,然后为此后的所有调用重新定义自身。

或者,类似于一些 shell 会做的自动加载,您可以创建一个单行函数,每次读取 rc 文件时都会定义该函数,如下所示:

printf '%b' '[ -f ~/.fn_name ] &&\n\tfn_name(){ . ~/.fn_name; }\n' >>~/.bash.rc

...并且在~/.fn_name...之内

fn_name(){ : now redefine the function; }

...这样,fn_name在第一次调用之前,几乎不会使用任何 shell 状态,它不会造成混乱.bash.rc,并且可以轻松管理。

不过,将所有这些类型放在一个~/.fn文件中,从主 rc 中获取源,然后从中获取每个个体,可能会更容易。

相关内容