题外话

软件的安装在linux下主要分为两种。一种是通过包管理器例如ubuntu的apt-get xxx,另一种是自己手动安装。通过包管理器安装的,基本开箱即用,无需配置,但是存在一个问题,有时候无法安装最近的程序。例如,我现在用的是ubuntu14.04,在安装nodejs的时候,就无法安装到v8这个版本。此时就需要使用手动安装。

由于是自己下载binary文件手动安装的,难免会有配置上的问题。

问题描述

由于node安装在/opt上,所以在使用npm安装node package时,可能会出现permission denied的error。这个时候大多数人的做法是sudo npm install xxx。这时候问题来了,terminal提示sudo npm:command not found。显然root用户无法使用npm命令。

问题解决

回想一下我们在安装nodejs的时候,曾今在~/.bashrc中配置过环境变量,所以在个人用户的情况下就可以使用node和npm命令了。

因此,我们在terminal中输入echo $PATH可以发现PATH中包含nodejs的安装目录。而sudo echo $PATH可以发现,root用户的PATH中并没有包含nodejs的安装目录,这就是sudo时提示command not found的原因。

所以我们要做的,就是在root用户中添加上nodejs的环境变量。

  1. su进入root用户。
  2. 执行subl ~/.bashrc此时用sublime打开的就是root的~/.bashrc
  3. 在root的~/.bashrc的末尾添加source /home/[your username]/.bashrc。保存退出。
  4. source ~/.bashrc。此时问题就解决了。

感觉这个问题也不限于nodejs,所有sudo xxx:command not found的问题,也许都可以用这个方法解决。

网上其他的解决方法

使用软链接的方式。博主没有试过,不过据说也是可以的。

chmod -R 755 /opt/node
sudo ln -s /opt/node/bin/node  /usr/bin/node
sudo ln -s /opt/node/lib/node  /usr/lib/node
sudo ln -s /opt/node/bin/npm  /usr/bin/npm

参考文献

[问题解决]linux sudo xxx:command not found的更多相关文章

  1. Linux下提示 bash: xxx command not found

    今天在虚拟机上安装了CentOS5.5,发现运行一些很正常的诸如:init,shutdown,fdisk 等命令时,悍然提示: bash: xxx command not found. 那么,首先就要 ...

  2. linux命令存放 bash: xxx command not found

    参考资料:http://blog.sina.com.cn/s/blog_688077cf01013qrk.html 提示:bash: xxx command not found 首先就要考虑root ...

  3. Linux sudo命令——sudoers文件的配置

    Linux sudo命令与其配置文件/etc/sudoers   对linux有一定了解的人多少也会知道点关于sudo命令.sudo命令核心思想是权限的赋予 ,即某个命令的所属用户不是你自己,而你却有 ...

  4. Linux sudo 命令的应用

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  5. linux sudo命令

    Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他 特许用户才能完成的任务,比如:运行一些像mount,ha ...

  6. 示sudo: cd: command not found

    执行sudo cd 时出现 sudo: cd: command not found 原因shell shell是一个命令解析器 所谓shell是一个交互式的应用程序. shell执行外部命令的 时候, ...

  7. sudo: cd: command not found

    事件起因 今天在aws ubutun上忽然发现的一个问题,执行sudo cd 时出现 sudo: cd: command not found 原因 shell shell是一个命令解析器 所谓shel ...

  8. Linux sudo 命令使用简介

    Linux sudo 命令使用简介 by:授客 QQ:1033553122 基本语法: $ sudo [-u username] [command] -u:将身份变成username的身份 #编辑/e ...

  9. Ubuntu解决sudo: source: command not found错误

    Ubuntu Server上执行以下命令,可以看到默认打开的文件数限制为1024个. $ ulimit -n 1024 编辑/etc/profile配置文件,在最后添加一行: ulimit -SHn ...

随机推荐

  1. 一天搞定CSS(扩展):CSS Hack

    做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现.我个人是不太推荐使用hack的,要知道 ...

  2. Coursera 机器学习笔记(四)

    主要为第六周内容机器学习应用建议以及系统设计. 下一步做什么 当训练好一个模型,预测未知数据,发现结果不如人意,该如何提高呢? 1.获得更多的训练实例 2.尝试减少特征的数量 3.尝试获得更多的特征 ...

  3. java基础(八章)

    一.        什么是数组及其作用? 定义:具有相同数据类型的一个集合 作用:存储连续的具有相同类型的数据 二.        java中如何声明和定义数组 l  声明和定义的语法: 数据类型[ ...

  4. 微信JS-SDK开发 入门指南

    目录 前言 1. 过程 1.1 代码 1.2 代理 1.3 下载 1.4 解压 1.5 运行 1.6 查看 2. 微信接口测试 2.1 申请测试帐号 2.1.1 测试号信息 2.1.2 接口配置信息 ...

  5. POI使用:解析xls/xlsx文件(兼容office2003/2007/2010版本)

    package cn.eguid; import java.io.Closeable; import java.io.File; import java.io.FileInputStream; imp ...

  6. 字符串的拼接python

    数字可以强制转换为字符串,但是字符串不能强制转换为数字(会报错) a='abcs' b='dsys' 方法一.a+b 最low的一个方法,因为每+一次内存增加一次 方法二.print '%s%s'%( ...

  7. (转)java web 学习之路(学习顺序)

    第一步:学习HTML和CSS HTML(超文本标记语言)是网页的核心,学好HTML是成为Web开发人员的基本条件.HTML很容易学习的,但也很容易误用,要学精还得费点功夫. 随着HTML5的发展和普及 ...

  8. 在VMware上安装ubuntu,并且SecureCRT远程连接

     工具: VMware:VMware-workstation-full_12.5.5.17738.exe Ubuntu镜像:ubuntu-16.04-server-amd64.iso 远程连接工具-- ...

  9. druid参数配置说明

    配置 缺省值 说明 name   配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来.如果没有配置,将会生成一个名字,格式是:"DataSource-" ...

  10. git 知识点汇总

    git commit git commit 命令执行后, git 主要执行了三个操作: 为每一个文件生成一个快照 每一个文件其实是真的数据, 所以 git 会把整个文件内容转成二进制, 然后经过压缩直 ...