我开发了几个实用脚本来解决我的团队日常工作的特定问题。
到目前为止,我在同事的笔记本电脑上部署脚本的操作如下:
- 每个解决方案都有一个
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 中获取源,然后从中获取每个个体,可能会更容易。