shell - 为什么 fish 不支持POSIX?

标签 shell posix fish

我听说过fish,它是一个友好且开箱即用的shell,但它也不支持POSIX 标准。
另一方面,我阅读了 POSIX 标准(并且我还在我的 Fedora 上测试了它,它是惊人的开箱即用的 shell,现在我想将我的默认 shell 更改为 fish)。

但是我提出这个问题的原因是:我误解了 fish 和 POSIX 标准之间的关系,你说 fish 不完全支持 POSIX 是什么意思? & 如何? (我应该把我的 bash 改成 fish 吗?)。

请简单解释一下,因为我是一个小新手,谢谢。

最佳答案

fish 不是也从未尝试过与 POSIX sh 兼容。

这实际上只是意味着它是一种单独的语言(如 Java、Python 或 Ruby),而不是 sh(如 Bash、Dash 和 Ksh)的实现或扩展。

显然,就像您不能将 Java 片段复制粘贴到 Python 程序中一样,您也不能复制粘贴 sh编码到fish .

实际上,这意味着当您搜索诸如“如何在我的提示中显示当前 git 分支”之类的内容时,您需要确保找到 fish答案是因为sh那些不会工作。类似地,当书籍或说明给出要运行的命令时,您可能偶尔需要手动重写其中的一些(或打开 bash shell 并将它们粘贴到那里)。

这是否重要完全取决于您,所以一定要试一试。

关于shell - 为什么 fish 不支持POSIX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48732986/

相关文章:

shell - 如何从 fish shell 的命令历史记录中删除条目?

node.js - 运行 npm 脚本时 npm 使用哪个 shell?

php - 如何在 Cron 上动态设置变量?

linux - 为 ping ssh 端口添加超时?

python - 'HOME' 的 Bash 环境变量设置返回 "pyenv: no such command ` sh-activate'"

linux - 在 Bash 中,如何显示脚本输出然后恢复到之前的输出(如 less、top 或 watch)

c - Exec() 和 Fork()

bash - 如何在 Bash 中的 $PATH 中查找文件?

调用 rename() 而不覆盖意外数据且不覆盖意外数据

shell - 如何在 fish shell 中将转义插入模式重新映射到 'jk'?