安装 bash 函数的首选方式?

安装 bash 函数的首选方式?

我写了一个名为的 bash 函数向上我通过 github 分享。现在我正在为安装说明而苦苦挣扎。我知道“安装”bash 函数有两个选项:

  1. 把它们放入.bashrc
  2. 将它们放入名为 .bash_functions 的文件中,并将该文件放入.bashrc

所以,我的想法是建议下载该函数并.bashrc相应地修改文件。

我研究了类似的项目如何实现这一点,其中一些甚至.bashrc在安装时操纵文件(即他们将函数放在那里)。这样做似乎很常见,但我觉得.bashrc自动操作是一个坏主意。

那么,首选方式是什么?对此是否有一些共识?

答案1

分发方式有3种:

  1. 添加行到$HOME/.bashrc
  2. 来源为的文件.bashrc
  3. 可以包含到目录中的文件/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 之间的差异及其含义。

相关内容