当前位置:首页 > Linux

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

canca5年前 (2021-01-08)Linux825

脚本中使用$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://www.iant.work/post/751.html

标签: sudoLinux
分享给朋友:

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

在Linux下安装和使用MySQL

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

wget下载文件

一、下载目录#wget -r -np -nd http://example.com/packages/这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。二、下载指定扩展名文件#…

解决linux下DNS无法解析,mysql大小写敏感问题

下午项目启动的时候报[net.sf.ehcache.Cache]-[ERROR] Unable to set localhost. This prevents creation of a GUID. Cause was: IDC-V-70024: IDC-V-70024 java.net.…

Linux VPS新硬盘分区与挂载教程

通过fdisk -l我们可以看到/dev/xvdb(此名称因系统而异)容量有23.6G,而且没有分区,接下来我们对它进行分区和挂载 (红色字为需要输入的部分,黑色字为系统显示部分) 1.fdisk -l [root@MyVPS ~]# fdisk -l Disk /dev/xvda: 8589 MB…

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

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

debian系统如何搭建 Samba服务器

debian系统如何搭建 Samba服务器

几乎所有的 Linux 发行版都提供了一个很好的工具 Samba来轻松实现文件共享。最近在Nanopi2 上安装了 debian 系统,然后准备搭建Samba 服务器来实现文件的共享,以下步骤仅供参考。…

发表评论

访客

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