出于安全方面的考虑,使用sudo执行命令将在一个最小化的环境中执行,环境变量都重置成默认状态。所以PATH这个变量不包括用户自定义设置的内容

在sudo用户的主目录里的.bashrc中添加如下内容即可解决

$ vim ~/.bashrc

alias sudo="sudo env PATH=$PATH"

有这样一个shell脚本,其内容如下,没有给其x权限

vim test.sh

#!/bin/bash

echo "${PATH}"
# 执行该脚本,可以看到echo输出的结果
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ bash test.sh
/opt/ossutil:/opt/openresty/nginx/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8/bin:/opt/jdk1.8/jre/bin:/home/test_ops/.local/bin:/home/test_ops/bin
# 但是加上sudo,上述结果就不显示了,而是一个系统默认的${PATH}变量结果
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ sudo bash test.sh
/sbin:/bin:/usr/sbin:/usr/bin
# 因其没有x权限,所以无法这样执行
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ sudo ./test.sh
sudo: ./test.sh: command not found
# 给该脚本加上x权限
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ chmod a+x test.sh
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ ll
total 4
-rwxrwxr-x 1 test_ops test_ops 28 Sep 11 11:55 test.sh
# 可以执行,但结果相同
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ sudo ./test.sh
/sbin:/bin:/usr/sbin:/usr/bin
# 在用户的主目录里的.bashrc中添加如下内容
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ vim ~/.bashrc alias sudo="sudo env PATH=$PATH" # 退出登陆后再次执行,其结果正是自己想要的效果
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ sudo ./test.sh
/opt/ossutil:/opt/openresty/nginx/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8/bin:/opt/jdk1.8/jre/bin
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ sudo bash test.sh
/opt/ossutil:/opt/openresty/nginx/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8/bin:/opt/jdk1.8/jre/bin
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ bash test.sh
/opt/ossutil:/opt/openresty/nginx/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8/bin:/opt/jdk1.8/jre/bin:/home/test_ops/.local/bin:/home/test_ops/bin
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ ./test.sh
/opt/ossutil:/opt/openresty/nginx/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8/bin:/opt/jdk1.8/jre/bin:/home/test_ops/.local/bin:/home/test_ops/bin
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$

参考连接:https://blog.csdn.net/jiangxuege/article/details/82592258

解决sudo用户找不到环境变量的问题的更多相关文章

  1. sudo用户找不到环境变量 sudo找不到/usr/local/bin 下的执行文件,

    出于安全方面的考虑,使用sudo执行命令将在一个最小化的环境中执行,环境变量都重置成默认状态. 所以PATH这个变量不包括用户自定义设置的内容,如找不到/usr/local/bin/下面的命令在sud ...

  2. sudo执行脚本找不到环境变量

    sudo执行脚本找不到变量 问题 当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就找不到变量,未能 ...

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

    简介 变量 普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就找不到变量,未能获取到值,如题情况如下: ...

  4. 关于使用sudo找不到环境变量的问题

    参考这里:https://www.cnblogs.com/zhongshiqiang/p/10839666.html 使用sudo -E 保留当前用户环境,这时就不会存在找不到环境变量的问题了.

  5. SSH登录远程主机执行脚本找不到环境变量

    这是因为在Linux上,bash会有四种模式,根据不同的case,Linux会加载不同模式的bash.一般如果你自己直接登录主机,能看到环境变量,但是使用ssh 远程登录执行脚本就找不到环境变量,那么 ...

  6. sudo执行脚本找不到环境变量解决方法

    问题: 当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本, 然后再sudo执行脚本,就找不到变量,未能获取到值. 原因 sud ...

  7. 解决SSH远程执行命令找不到环境变量的问题

    通过SSH执行远程主机的命令或脚本时,经常会出现找不到自定义环境变量的问题.但是,如果通过SSH登录远程主机,然后再执行相同的命令或脚本,那么此时执行又是成功的.两种相似的方法,得到的结果却截然不同, ...

  8. Docker - 解决重新进入容器后,环境变量失效的问题

    问题背景 在容器中,在 /etc/profile . /etc/environment 设置了环境变量 退出容器,重新进入容器 刚刚设置的环境变量失效了 解决办法 将环境变量设置在 /root/.ba ...

  9. 解决修改 Linux 下的 PHP 环境变量不生效的方法

    这个问题出现服务器有多个 PHP 版本,php -v和phpinfo()显示两个不同的版本 最近真的,都给朋友解决问题了... phpinfo查看的 php 版本是 7.2.6,到 bash 去使用p ...

随机推荐

  1. JavaWeb_初识过滤器Filter

    菜鸟教程 传送门 过滤器Filter::JavaWeb三大组件之一,它与Servlet很相似,过滤器是用来拦截请求的,而不是处理请求的 当用户请求某个Servlet时,会先执行部署在这个请求上的Fil ...

  2. Sqlmap自动注入--REQEST

    数据段: --data sqlmap.py -u ”192.168.1.101/mullitea/login.php" --data="username&passwd=2& ...

  3. BootStrap之X-editable插件使用

    项目背景 刚加入公司的新项目,主要在做开发工作.由于是新手,本周的工作是配合另外一个同事写前台页面.前台框架是Bootstrap,本文主要介绍一下项目需求的一个功能——表格行内编辑事件. 使用X-ed ...

  4. C++入门经典-例3.1-判断输入的数字是否为奇数

    1:代码如下: // 3.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  5. java代码如何在没有安装JDK的Windows下运行

    java代码如何在没有安装JDK的Windows下运行? 对于Java桌面应用来说,比较烦琐的就是安装部署问题,如:客户端是否安装有jre.jre版本.jre在哪里下载.如何用jre启动Java应用等 ...

  6. Win10无法修改编辑hosts文件

    Win10无法修改编辑hosts文件 一.总结 一句话总结: 这里我的问题是windows的某次更新中把hosts文件或者上级目录设置成了只读,在文件属性中去掉这个只读就好 后文的操作相当于是给文件添 ...

  7. leetcode-easy-math-412 Fizz Buzz

    mycode  99.06% class Solution(object): def fizzBuzz(self, n): """ :type n: int :rtype ...

  8. emqtt 系统主题

    $SYS-系统主题 EMQ 消息服务器周期性发布自身运行状态.MQTT 协议统计.客户端上下线状态到 $SYS/ 开头系统主题. $SYS 主题路径以 “$SYS/brokers/{node}/” 开 ...

  9. Redis 常用命令 大全

    Redis 常用命令 发现几个很好的 Redis 常用命令汇总大全网页,分享给小伙伴们~ 1.Redis 命令参考 http://redisdoc.com/string/index.html 2.W3 ...

  10. 嵌套的JsonObject与JSONArray的取值---JSON中嵌套JSONArray

    在复杂的JSON数据的格式中,往往会对JSON数据进行嵌套,这样取值会比之前的取值稍微复杂一点,但是只要思路清晰,其实取法还是一样的.就跟if else语句一样,如果if中套if,if中再套if,写的 ...