问题

问题

问题

我正在运行带有 gnome 3.36.8 的 Ubuntu 20.04,我正在尝试设置一个应该运行命令的快捷方式npx mira refresh。这应该刷新外部显示器。此命令在终端中运行良好,不需要任何用户输入,但我的自定义快捷方式不起作用。 npm是使用安装的nvm

我尝试过的方法

我尝试使用 gnome 快捷方式管理器(在“设置”>“键盘快捷键”中)设置快捷方式,但没有成功。重新启动也没有用。我也试过了: npm exec -c "mira refresh"因为npx是 的短命令npm exec。快捷方式是 Ctrl + R。

我检查了 PATH 变量以确保它指向正确的路径,并且它是(输出的第一个路径)。

> echo $PATH
/home/myName/.nvm/versions/node/v18.3.0/bin:/home/myName/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

> which npx
/home/myName/.nvm/versions/node/v18.3.0/bin/npx

我还想检查它们是否可能是冲突的版本。

> dpkg -l npx
dpkg-query: no packages found matching npx

>locate npx
/home/myName/.npm/_npx
[...]
/home/myName/.nvm/versions/node/v18.3.0/bin/npx
[...]

另外,执行快捷方式(但不是终端中的命令)时,日志中出现错误:

> cat /var/log/syslog | grep "npx"
sh: 1: exec: npx: not found

问题

  1. 快捷方式不是使用相同的 PATH 变量吗?为什么命令在终端中正常运行,但通过快捷方式执行时失败?
  2. 我该如何解决我的问题?有什么想法吗?

感谢您的时间和帮助。

答案1

问题出在npmvia的安装上nvm

https://github.com/nvm-sh/nvm/issues/2025

原因是 nvm 将自身安装到 .bashrc。如果您启动桌面并直接从桌面环境运行应用程序(即:单击图标、自动启动等),似乎 .bashrc 永远不会被评估。这会导致应用程序的环境具有缺少适当节点路径的 PATH 变量。

我不得不移动这些行:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

到 .profile 并且它起作用了。

相关内容