是否可以在单个脚本中包含包含 Fish 和 POSIX shell 的多语言 shell 文档?

问题描述

背景

切换到Fish作为主shell后,更能感受到这个词是如何充满了bash中心主义,或者至少对友好的交互shell不是很友好。

很常见的一点是找到邀请 echo 'export PATH= "/some/specific/path:$PATH"' >>~/.bashrc 的文档。或者它最多建议一些更通用的配置文件,如 profileinputrc 等。虽然它很容易转置,但它仍然提出了一个问题:作为替代良好实践提出的更好的更便携的替代方案是什么?也就是说,是否有可能提出一个补丁,将这种面向 Bash/POSIX 的文档变成一个功能齐全的替代多语言 shell 脚本,该脚本也适用于 Fish,甚至可能适用于其他 shell?

挑战

这里列出了一些要点,当人们专注于 Unix shell(即没有 DOS,没有 Powershell),甚至只考虑 Bash 和 Fish 时,很难找到多语言替代方案

相关资源

解决方法

我个人的偏好是只接受“fish”方式。

例如,您提到了通过更新 .bashrc 添加到 PATH 的文档。 “fish 方式”将是 set -Ua fish_user_paths my_new_path(或使用最近添加的 fish_add_path 命令)一次

您(可以)在 fish 中有一个已知的位置,而不是必须通过数十或数百行配置文件和 rc 文件来检查和更改您的 PATH 添加项 (set --show fish_user_paths ).

这还具有将更改传播到所有正在运行的 fish shell 实例的优点,而不必像在 {{ 1}}。当您在长时间运行的系统上打开多个终端窗口时,这非常有用。

当然,如果你需要 bash 来做某事,那么你总是可以从 bash 中放入一个 bash 子 shell,然后你的简单添加和编辑fish 中的 PATH 当然在子 shell 中可用。在这种情况下,无需担心在 fish 中交叉维护一堆 PATH 修改。