我写了一个名为的 bash 函数向上我通过 github 分享。现在我正在为安装说明而苦苦挣扎。我知道“安装”bash 函数有两个选项:
- 把它们放入
.bashrc
- 将它们放入名为 .bash_functions 的文件中,并将该文件放入
.bashrc
所以,我的想法是建议下载该函数并.bashrc
相应地修改文件。
我研究了类似的项目如何实现这一点,其中一些甚至.bashrc
在安装时操纵文件(即他们将函数放在那里)。这样做似乎很常见,但我觉得.bashrc
自动操作是一个坏主意。
那么,首选方式是什么?对此是否有一些共识?
答案1
分发方式有3种:
- 添加行到
$HOME/.bashrc
- 来源为的文件
.bashrc
- 可以包含到目录中的文件
/etc/profile.d
我想说这取决于函数的数量及其长度。如果它是 2 个或更多函数,并且它们有点长,我几乎会将它们作为单个文件(或多个文件)分发,该文件通过用户的文件获取或通过您提供的脚本$HOME/.bashrc
合并到 中。/etc/profile.d
如果它是单个函数或可能是 2 个函数,并且它们很短,那么我会严格将它们作为 .txt 文件分发,或者简单地将它们作为代码发布到 github 上,以便将其复制/粘贴到您现有的环境中,即包含或$HOME/.bashrc
下的预先存在的文件/etc/profile.d
,最终将其准确地留给用户。
笔记: /etc/profile.d
包含多个 shell(Csh、Bash、Zsh 等)的文件。此处包含的任何文件也将被这些其他 shell 使用。这里文件的命名决定了哪些 shell 将使用它们。 A.csh
将提供 Csh/Tcsh,a.sh
将提供 Bash、Zsh 等。
关于正确使用/etc/profile.d
如果您好奇,添加的文件/etc/profile.d
应包含仅在登录开始时运行一次的命令。 (这包括图形登录,因为它们也从登录 shell 开始。)如果 shell 是交互式的,则运行它的用户可能已登录,因此它可能有一个祖先(启动它的人,或启动启动它的人,或启动它,等等)那是一个登录 shell。
请参阅 AskUbuntu 上这个优秀的答案,标题为:为什么非登录 shell 不调用 /etc/profile?,其中详细介绍了交互式 shell 与登录 shell 之间的差异及其含义。