如何在 fish shell 中一次异步地 运行 多个命令?

How to run multiple commands at once asynchronously in fish shell?

在bash中,我会运行

(npm install -g npm@latest && npm install -g neovim bash-language-server vscode-langservers-extracted graphql -language-service-cli solidity-language-server typescript-language-server)&安装一些我需要的包。

我一直在尝试在 fish 中执行相同的命令,但遇到了问题。我正在考虑创建一个单独的文件并使用 bash 运行 它,但是如何在 fish 中执行此操作会很好。我收到 fish: Command substitutions not allowed 错误。我可以运行这个

npm install -g npm@latest && npm install -g neovim bash-language-server vscode-langservers-extracted graphql -language-service-cli solidity-language-server typescript-language-server,但它不是异步的。我有很多这样的其他命令,因此异步会更快

谢谢

当您将命令放在 Bash(或任何 POSIX shell)的括号中时,您是 运行 它们在子 shell 中,与& 当然是将 subshell 放在后台。

Fish 没有子 shell 的确切概念,但对于您的特定示例,您可以通过 运行 在 sub-process 而不是子shell.

fish -c "npm install -g npm@latest && npm install -g neovim bash-language-server vscode-langservers-extracted graphql -language-service-cli solidity-language-server typescript-language-server" &

像这样的子shell和sub-process之间有several differences(也许还有其他),但它们对这个特定场景无关紧要。