如果不触发 /sbin/init,则无法执行包含“init”的命令

如果不触发 /sbin/init,则无法执行包含“init”的命令

所以我有这个想要用 npx 运行的节点包,命令如下:

npx @pika/init --help

这应该只是下载包、执行它并打印帮助。

然而,它所做的是尝试执行/sbin/init

我已经在运行 Arch 的台式机、运行 Ubuntu 18.04 的服务器和运行 CentOS 6.10 的另一台服务器上尝试过此操作 - 都表现出相同的行为。

我也尝试过用引号括住参数或者转义/,但都没有用。

有人知道这里发生了什么以及我该如何避免这种情况吗?

谢谢!

哦,不管怎样,我在这三个系统上都使用 bash 作为我的 shell。

答案1

这种行为被描述为官方 npm 文档

“默认情况下,npx 将检查 $PATH 或本地项目二进制文件中是否存在,并执行它。如果未找到,它将在执行前进行安装。”

就您而言,这仅仅意味着本地安装的任何内容都$PATH优先于任何远程包。

您可以使用选项--ignore-existing忽略$PATH或本地项目中的现有二进制文件。这将强制npx执行临时安装并使用最新版本。

生成的命令如下所示:

npx --ignore-existing @pika/init --help

相关内容