当前位置:首页 > Linux

命令 "sudo -H" 中的这个 "H" 什么作用?

canca6年前 (2021-01-08)Linux979

脚本中使用$HOME变量。

问题描述:某些同事原来写的脚本中包含如下内容。 

BIN_DIR=${HOME}/tools
TAIR_BIN_DIR=${HOME}/tair_bin
TAIR_SRC_DIR=${HOME}/tair_src

原来的使用习惯是:直接登录admin的shell运行这些脚本。改用个人帐号使用sudo -u admin example.sh运行之后,发现脚本中$HOME变量获取成个人帐号家目录。

问题分析: sudo执行命令的时候,默认使用个人帐号的家目录赋值给$HOME变量。比如张三执行 _sudo -u admin example.sh_得到的$HOME结果是 /home/zhangsan 原因是sudo命令默认不会修改$HOME变量,如果希望改变sudo中$HOME变量,则需要增加-H参数: _sudo -u admin -H example.sh 

举例如下: 

[yuanqiao@tair004013 ~]$ cat example.sh
#!/bin/sh
BIN_DIR=${HOME}/tools
echo 'BIN_DIR='$BIN_DIR
[yuanqiao@tair004013 ~]$ sudo -u admin ./example.sh
BIN_DIR=/home/yuanqiao/tools
[yuanqiao@tair004013 ~]$ sudo -u admin -H ./example.sh
BIN_DIR=/home/admin/tools

解决方法: 虽然sudo -H这个参数能解决脚本的这个问题,但并不推荐大家使用sudo的-H参数,因为执行脚本的时候并不一定知道脚本里面的变量是如何定义或获取的。 希望还是从脚本的编写角度出发,对脚本作适当修改,减少对admin/root这样帐号环境变量的依赖。



扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/751.html

标签: sudoLinux
分享给朋友:

“命令 "sudo -H" 中的这个 "H" 什么作用?” 的相关文章

在Linux下安装和使用MySQL

一、引言 想使用Linux已经很长时间了,由于没有硬性任务一直也没有系统学习,近日由于工作需要必须使用Linux下的 MySQL。本以为有Windows下使用SQL Server的经验,觉得在Linux下安装MySql应该是易如反掌的事,可在真正安装和使用…

Linux 安装Apache

本以为Apache的编译安装很简单,其实不然;  以前的环境下编译报错很少 ,但这次不行了  提示configure: error: APR not found. Please read the documentation.  经网上查阅资料才知道这是Apac…

CentOS7安装iptables防火墙

CentOS7默认的防火墙不是iptables,而是firewalle.安装iptable iptable-service#先检查是否安装了iptablesservice iptables status#安装iptablesyum install -y iptables#升级iptable…

centos 7 crontab定时器及开机自启

crontab 建议直接采用centos7 自带得cronteb包,定时器:就是定时去执行干某一件事在这里我以脚本为媒介1 当然是创建一个脚本,创建目录随意但是你一定要记得。。直接通过vi来创建一个test.sh脚本!…

centos7 手动修改dns

方法一:vim /etc/resolv.conf…

linux 系统tar文件压缩打包命令

打包成tar.gz格式压缩包…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。