我听说鱼是一个友好的开箱即用的外壳,但它也不支持POSIX标准.另一方面,我读到了关于POSIX标准(我也在我的Fedora上进行了测试,它是惊人的,开箱即用的shell现在我想将我的默认shell更改为fish).
但是我提出这个问题的问题是:我误解了鱼和POSIX标准之间的关系,你对鱼的意思不完全支持POSIX?& 怎么样?(我应该把我的bash变成鱼吗?).
请解释一下,因为我是一个小新手,谢谢.
tha*_*guy 13
鱼不是,从来没有尝试过与POSIX sh兼容.
这实际上只是意味着它是一种单独的语言(如Java,Python或Ruby),而不是sh的实现或扩展(如Bash,Dash和Ksh).
显然,就像您无法将Java片段复制粘贴到Python程序中一样,您无法将sh代码复制粘贴到其中fish.
在实践中,这意味着当您搜索"如何在我的提示中显示当前git分支"之类的内容时,您需要确保找到fish答案,因为这些答案sh无效.同样,当书籍或说明书指示运行时,您可能偶尔需要手动重写其中一些(或打开一个bashshell并将其粘贴到那里).
这件事是否完全取决于你,所以一定要试一试.
其实,fish 是不是符合POSIX的sh 定义.但两者都不是csh(可能zsh).您仍然可以将其fish用作交互式shell.
例如echo $$,在POSIX中显示shell的pid sh.但fish事实并非如此.
(这就是为什么我没有切换到fish并继续使用zsh我的日常交互式登录shell)
您可以将交互式登录shell(使用chsh)更改为fish.
但是如果你编写shell脚本,那么为POSIX sh规范编写它们会使这些脚本更具可移植性.(你将使用shebang #!/bin/sh启动它们,Linux execve(2)可以理解).在某些情况下,您不关心shell脚本的可移植性,您可以将它们#!/usr/bin/fish 作为fish脚本开始.然后他们将无法在没有的系统上工作fish.
另外,系统(3) C标准库函数使用/bin/sh -c.
我非常喜欢Yann Regis- Gianas在FOSDEM2018 上对POSIX [s]地狱的谈话.
| 归档时间: |
|
| 查看次数: |
3290 次 |
| 最近记录: |