bashからFishに移行しようとしていますが、多くの互換性の問題と破損したコマンドに直面しています。
シームレスなシェル移行を達成するために従うべきステップのフレームワークは何ですか?また、bashではなくシェルを使用して新しいプログラムをダウンロードするときに注意すべきことは何ですか?
答え1
FishシェルはPOSIXシェル/ Bourneシェルと互換性がなく、さまざまな点で異なります。シェルスクリプトは主にshまたはbashを使用するため、スクリプトの先頭で正しいソルバーを選択するように注意する必要があります。 unix.stackexchange.comの多くのシェルベースのソリューションでも同様です。
おすすめブック https://fishshell.com/docs/current/fish_for_bash_users.html違いのため。
答え2
FishはbashまたはPOSIXシェルと互換性がありません。
つまり、使用するスクリプト言語が異なるため、bashスクリプトまたはshスクリプトを直接実行することはできません。
つまり、誰かが「シェルでこのコマンドを実行してください」と言うと、Fish互換バージョンを入手、直接翻訳するか、bashセッションを開いてそこで実行する必要があるということです。
これらのうちどれが最も意味があるかは状況によって異なります。一部のパッケージのみをインストールしますか?これは一般的に翻訳が簡単ですが(非常に単純なものはsudo apt update && sudo apt upgrade
互換性があります)、bashセッションで実行しても問題はありません。
今、「新しいプログラムのダウンロード」に関して、2つのシナリオがあります。
どちらもあなたのプログラムです走る。 「cargoを実行」または「nvimを実行」する必要があるようです。この場合、プログラムは、シェルスクリプト、Pythonスクリプト、コンパイルされたRust、Go、またはC ++プログラムなど、必要なすべてのインタプリタによって簡単に実行されるため、問題はありません。これを実行すると、OSがそれを実行する方法を理解し(#!
スクリプトの一番上の行を読んで)、完了します。
またはプログラムが必要なシェルスクリプトですsource
。文書が「put source nvm
~ / .bashrc」(通常はスペルでマークされ、見にくい. nvm
点が前に表示されている)を指示する場合がこれに該当します。このような場合は、fish互換バージョンまたは代替バージョンを見つけるか、bashスクリプトでfish環境を変更する方法を使用する必要があります。ベースまたはやり直す。
私の経験によれば、プロジェクトが魚の支援を受けて、後者はますますまれになっています。たとえば、Pythonが「環境を有効にするにはvenv / bin / activateソースを入力してください。