我试图从bash迁移到fish,但面临许多兼容性问题和坏命令。
实现无缝外壳迁移的步骤框架是什么?另外,使用bash以外的shell下载新程序时,我应该注意什么?
发布于 2022-08-03 12:42:17
鱼与bash或POSIX外壳不兼容。
这意味着它使用的脚本语言是不同的,因此它不能直接运行bash或sh脚本。
这意味着,当有人告诉您“在shell中运行此命令”时,您要么需要获得与鱼兼容的版本,要么自己翻译它,要么打开bash会话并在那里运行它。
其中哪一个最有意义取决于背景。这仅仅是什么东西,例如安装一些软件包?这通常很容易翻译(像sudo apt update && sudo apt upgrade这样的非常简单的东西甚至是兼容的),但是在bash会话中运行它也不会有什么害处。
现在,当谈到“下载新程序”时,有两种情况:
要么就是你运行的程序。就像你需要“执行货物”或“运行nvim”。在这种情况下,没有问题,因为程序只是由它所需的任何解释器运行,不管它是shell脚本还是python脚本,还是已编译的生锈、go或c++程序。如果您运行它,操作系统就会知道如何(通过读取脚本顶部的#!行)并完成操作。
或者程序是一个需要source的shell脚本。如果文档告诉您“将source nvm放在您的~/..bashrc中”(也经常拼写为. nvm,并带有很难看到的前导点),就会出现这种情况。在这种情况下,您将不得不找到与鱼兼容的版本或替代版本,或者您将不得不求助于允许从bash脚本(如贝司或回放 )修改鱼环境的东西。
根据我的经验,随着项目获得渔业支持,后者变得更加罕见。例如,当python告诉您"Source /bin/ activate以激活环境“时,您只需简单地源venv/bin/activate.fish,因为python的venv模块提供了立即提供的鱼类支持。
发布于 2022-07-27 21:28:44
fish shell与POSIX shell / Bourne shell不兼容,在许多方面存在差异。Shell脚本主要使用sh或bash,因此您必须注意,如果脚本的开头选择了正确的解释器。在unix.stackexchange.com,许多基于shell的解决方案也是如此。
阅读https://fishshell.com/docs/current/fish_为_bash_users.html以了解差异是明智的。
https://unix.stackexchange.com/questions/711522
复制相似问题