问题
我正在运行带有 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
问题
- 快捷方式不是使用相同的 PATH 变量吗?为什么命令在终端中正常运行,但通过快捷方式执行时失败?
- 我该如何解决我的问题?有什么想法吗?
感谢您的时间和帮助。
答案1
问题出在npm
via的安装上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 并且它起作用了。