sudo后,环境变量改变,找不到已经安装的软件?

linux 执行sudo +命令,显示不到命令 1.问题描述: 当出现以下错误: 2.解决方案: 执行以下命令: 切换到超级用户: su root 编辑文件/etc/sudoers gedit /etc/sudoers 到Defaults env_reset, 将其改为Defaults !env_reset 保存退出 编辑bashrc文件 gedit ~/.bashrc 最后一行加入:alias sudo=‘sudo env PATH=$PATH’ 保存退出,重启一下系统 参考https://blog.csdn.net/run_mo/ 阅读详情

centos 5.5

在安装nodejs后,通过

curl http://npmjs.org/install.sh | sh

来安装npm,普通权限失败,使用sudo失败。而在使用root帐号时成功。成功后,退回到普通用户,提示在/usr/bin目录下找不到npm。做个软链接到

ln -s /usr/local/bin/npm /usr/bin/npm

可以使用,但在使用sudo时,提示

/usr/bin/env: node: No such file or directory

于是,就有了下文。

  • 普通用户的环境变量
    修改普通用户的 .bash_profile 文件:

    $vi ~/.bash_profile

    添加:

    PATH=$PATH:$HOME/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin

    保存后立即生效:

    source ~/.bash_profile
  • sudo 不能按[Tab]命令补全: $ complete -c sudo
  • sudo 后环境变量
    centos 5 的 sudo 默认将原有的环境变量 reset,只保留一些对安全没有影响设定。但是在安全级别没那么高的情况下显得不那么方便, 可以通过 /usr/sbin/visudo 来修改为使用 root 原有的环境变量.
    更改前:

    Defaults    env_reset
    Defaults    env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \
    LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \
    LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
    LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \
    LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
    _XKB_CHARSET XAUTHORITY"

    注释并添加:

    Defaults    !env_reset
    #Defaults    env_reset
    #Defaults    env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \
    #                        LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \
    #                        LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
    #                        LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \
    #                        LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
    #                        _XKB_CHARSET XAUTHORITY"

Unity与iOS原生交互实战指南 C#(DllImport) → C 接口(extern "C") → Objective‑C / SwiftObjective‑C → UnitySendMessage → C#(GameObject + public 方法)在写.mm文件;在里面写;C# 用声明;调用它,参数就是 string / 数值等;在.mm里做你想做的 iOS 原生操作。在 Unity 里准备一个常驻 GameObject,比如;上面挂一个脚本,写;在 iOS 插件中用; 阅读详情

相关推荐

【QT开发教程】Qt中的数据加密与解密

在现代应用程序中,数据加密与解密是保护敏感信息的重要手段。Qt本身并不直接提供数据加密与解密的支持,但可以使用第三方库,如OpenSSL或Crypto++,来实现这一功能。本文将介绍如何在Qt中使用OpenSSL进行数据加密与解密,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 1129

linux下 su & su - & sudo命令对环境变量造成的影响 & 设置环境变量

linux下 su & su - & sudo命令对环境变量造成的影响 & 设置环境变量 首先讲讲背景吧,我首先是遇到了一个问题,那就是在编译中我发现,当我使用sudo ./bash_create.sh(bash_create调用了cmake) 编译会报错。而当我使用su切换到root时,编译能通过不会报错。然后我便分别用root和普通用户测试了一下使用sudo和不使用sudo命令的情况,结果如下: 可以看到,无论是root还是ghs(普通用户)在使用cmake --versio

weixin_39490665的博客 2911

施工常用图库-梁板碗扣式脚手架图.zip

施工常用图库-梁板碗扣式脚手架图.zip

sudo环境变量问题;程序库函数寻

1. sudo 和 root不完全等效,继承的环境变量不一样,最主要的区别还是输入的密码不同。 2. 使用sudo去执行一个程序时,出于安全的考虑,这个程序将在一个新的、最小化的环境中执行,也就是说,诸如PATH这样的环境变量,在sudo命令下已经被重置成默认状态了。由于环境变量的原因,比如pip可以执行,但是sudo pip不一定可以执行(PATH改变了,除非加上完整路径)。 3. 默认情况...

weixin_34378969的博客 213

如何搭建交叉编译环境

搭建交叉编译环境是一项很繁琐和耗时的工作,查过资料后发现一篇描述很详尽的博客,以power pc为例,转载自 http://blog.sina.com.cn/s/blog_70dd16910100y7vj.html。 第一部分 概述 跟主流的PC软件开发工具一样,嵌入式系统开发需要编译器,链接器,解释器,以及其它的一下工具(这些工具可以集成到eclipse当中来方便用户开

dinkysummydinky的专栏 3686

交叉编译环境在root用户下不到arm-linux-gcc问题:

原因是:环境变量(交叉编译路径)可能是在普通用户下添加的,所以在root用户下创建的文件使用arm-linux-gcc编译的时候,不到arm-linux-gcc。 解决办法:个终端:sudo -s           source ~/.bashrc           再重新编译就可以了,前提是交叉编译路径是放在~/.bachrc里面添加的。 转载于:https://www.cnblo...

weixin_30877227的博客 1740

修改或定义sudo下的PATH环境变量

1. 问题描述 Linux在普通用户权限下,可以使用sudo去执行相关的命令,但是有时候会提示:Command not found 这是因为由于安全考虑,sudo执行用一个程序时会在新的,最小化环境中执行,即使在环境变量PATH 中设置了路径也不到,因为在sudo执行下,采用默认的PATH变量使用。 2. 解决办法 a, 修改/etc/sudoers文件,里面的默认PATH变...

weixin_30600503的博客 2243

一些命令添加sudo不到

sudo 命令执行不到命令 如 sudo scapy sudo: scapy: command not found 原因 sudo是将用户切换为root,但是由于root并不是scapy文件的拥有者,不到scapy的路径 解决方法 以scapy为例 1.配置sudo的配置文件中的secure_path #查看scapy的文件路径 which scapy /home/zzl/.local/bin/scapy #修改/etc/sudoers sudo visudo 到 Defaults

weixin_44932880的博客 2297

sudo: mongod:不到命令

文章目录参考出错示例分析解决办法 参考 sudo不到命令:修改sudoPATH路径 出错示例 需要注意的一点是:使用 mongod 命令来重新启动 mongodb 服务需要使用 root 管理员权限启动。 但是普通用户也可以通过在启动命令前加上 sudo 以临时授予管理员的权限去执行该条命令, 但是使用时出现报错: sudo 报错:sudo: mongod:不到命令 ,如下图示: 分析...

活在当下!输出快乐! 8155

Linux sudo不到命令的解决办法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33787529的博客 1万+

linux 执行sudo +命令,报错:显示不到命令

虚拟机使用sudo命令时,明明脚本存在,但是显示不到命令。需要将脚本所在的环境变量添加到默认环境变量中。查看sudoer配置信息。

weixin_40833746的博客 2万+

解决sudo不到环境变量的问题

原因 sudo命令会重置环境变量,查看文件/etc/sudoers,可以看到这样的配置 Defaults env_reset 解决方法 最简单的, 使用sudo -E即可保留当前用户的环境变量, 但缺点也很明显,每次都要加 修改/etc/sudoers文件,将Defaults env_reset改为 Defaults !env_reset,这样以后使用sudo就再也不会重置...

一车面包人的博客 1万+

sudo python不到命令_linux sudo 运行不到java、python命令

在Ubuntu环境中安装好Java环境后设置环境变量:在/etc/profile中设置好了JAVA_HOME变量并引入到PATH中,由于Ubuntu默认是不以root用户登录的,这时echo $PATH可以看到JAVA_HOME已经被设置好了,java命令也可以执行。接下来sudo 运行shell脚本,提示不到java命令,$PATH中也不到JAVA_HOME这个路径了。查了很久的资料也没有...

weixin_39588104的博客 910

centos7 ifconfig命令不到_分享一个解决 sudo 命令不到环境变量的小技巧

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !如何解决 sudo 命令不到环境变量的问题在通过 sudo 运行命令时,系统会默认重置环境变量为安全的环境变量,也就是说,先前设置的变量都会失效,只有少数配置文件中指定的环境变量能够保存下来。sudo 的配置文件是 /etc/sudoers,需要 root 权限才能读取,运行以下命令:$ sudo sed...

weixin_39626162的博客 369

如何解决 sudo 命令不到环境变量的问题

第 11 行的 secure_path 配置项,其中包含的路径将被当做 sudo 环境的 PATH 变量使用,如果在 sudo 环境无法到某些命令,那么可以将这些命令的路径加入该配置项之中。在通过 sudo 运行命令时,系统会默认重置环境变量为安全的环境变量,也就是说,先前设置的变量都会失效,只有少数配置文件中指定的环境变量能够保存下来。第 5 行的 Defaults env_reset 表示默认会重置环境变量,因此自定义的变量会在 sudo 环境中失效,也就不会获取正确的变量值。

zc520yzy的博客 2502

sudo执行脚本不到环境变量

问题 当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就不到变量,未能获取到值,如题情况如下: $ cat tesh.sh echo $var $ var=aaa $ export var # export 变量 $ sudo echo $var # sudo执行echo命令,返回变量值 aaa $ sudo bas

bigSoldier的专栏 579

分享一个解决 sudo 命令不到环境变量的小技巧

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !如何解决 sudo 命令不到环境变量的问题在通过 sudo 运行命令时,系统会默认重置环境变量为安全的...

easylife206的专栏 1211

Linux 手动编译安装软件不到可执行文件

在 Linux 系统中手动编译安装软件不到可执行文件是一个常见的问题,以下将详细讲解其发生场景、原理以及解决方法。

qq_62784677的博客 1187

sudo: java:不到命令

神奇的事情又发生了 今个在sudo java的时候,发现了不到java命令的错误。 然后我在普通用户下和root用户下分别测试,都能到java命令。 ???奇了怪了,那这个sudo干了什么? 网上了下分析,发现答案真是参差不齐。现在来梳理下我的思路。 sudo的配置文件是在/etc/sudoers里,网上有的教程是修改这个文件,但是这个文件的权限相当高,root用户都是只读权限,我感觉修改这...

zhagzheguo的博客 5764

sudo go 提示不到命令:sudo: go: command not found

环境变量配置: # ~/.bash_profile export GOROOT=/usr/local/go export GOPATH=/usr/local/GO export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 错误描述: 使用非root用户,执行go version获得正确输出。 使用root用户,执行go verison获得正确输出。 使用非root用户,执行sudo go version获得输出sudo: go: command not f...

调皮李小怪博客 1万+

sudo执行脚本不到环境变量和命令

问题描述 普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就不到变量,未能获取到值,如题情况如下: $ cat tesh.sh echo $var $ var=aaa $ export var # export 变量 $ sudo echo $var # sudo执行echo命令,返回变量值 aaa $ sudo ba

Nickkun的博客 178
上一篇: 使用js对json数据和xml数据的转化
下一篇: .bash_profile和.bashrc的什么区别
veizz
博客等级 码龄17年 31粉丝 51原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值