如何在终端(Linux)中运行指向可执行文件的符号链接


3

我在Ubuntu机器上安装了NodeJ,并且该软件包已安装为nodejs。现在,以运行它node,我创建了一个符号链接:

sudo ln -s /usr/bin/nodejs /usr/bin/node

如果我直接调用符号链接,这将起作用,但不允许我简单地调用node以启动程序。

我该如何解决?


更多调查:nodejs作为“ nodejs”运行时是否可以正常工作?尝试将其作为“ node”运行时,您得到的错误消息到底是什么?另一件事:您可以看一下nvm(节点版本管理器),如果您需要软件包管理器未提供的特殊版本的节点,则很好。
FSMaxB

@FSMaxB运行nodejs 正常。但这还不够,因为其他所有程序都依赖于node作为全局命令可用。运行node不执行任何操作-没有错误消息。
西蒙·布德里亚斯

也许/ etc / profile中的别名可以提供帮助,但是如果节点由exec系统调用运行,则该别名将无效。您使用哪种软件取决于节点?
FSMaxB

@FSMaxB我也尝试过别名,该别名在命令行中有效,但不适用于可执行文件声明#!/usr/bin/env node。我有很多程序要在节点上运行,例如Mocha单元测试,Yeoman,Grunt,我想在Ubuntu上运行。
西蒙·布德里亚斯

除了尝试全新安装外,我真的不知道要做什么,但是我现在想到一个主意:不使用符号链接,而是用“#!/”编写bash脚本“ / usr / bin / node”。里面的bin / sh”和“ / usr / bin / nodejs .......”(以及以某种方式将传递给脚本的参数传递给nodejs,我不太擅长bash编程)
FSMaxB

Answers:


4

假设您通常询问的是可执行链接的符号链接,则此操作应立即可用。确保每个人都可以执行/ usr / bin / nodejs,然后重新启动终端。在任何情况下,node直接从终端中的任何地方进行呼叫都应正常工作。

如果node看起来执行正确,但是NodeJs本身不喜欢被称为node而不是nodejs,那就是另一个问题。


嘿,我刚刚意识到输入符号链接的完整路径是可行的(例如:)/usr/bin/node。但是,如果我只键入node它,则不会-我是否必须在PATH或终端中设置某些内容?
西蒙·布德里亚斯

@SimonBoudrias确保您的PATH变量包含“ / usr / bin”,您可以通过键入“ env | grep PATH”来进行检查。但是,“ / usr / bin”不在您的PATH变量中是非常不可能的,因为在这种情况下,您的系统将无法正常工作。
FSMaxB

@FSMaxB它在那里...(如果有帮助,我正在通过虚拟机在虚拟机中运行Ubuntu)
Simon Boudrias

2

Ubuntu中有一个程序“节点”,它与Node.js无关。只需将其卸载:

sudo apt-get remove node

(如果尝试过,则会找到答案whereis node。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.