转 Linux sudo命令
脚本中使用$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这样帐号环境变量的依赖。
相关文章
- Linux使用scp远程传输命令进行服务器文件互传(阿里云服务器)
- Linux命令:ps,netstat,top
- 每天一个linux命令(29):chgrp命令
- 每天一个linux命令(26):用SecureCRT来上传和下载文件
- linux下解压命令大全
- linux telnet 命令的使用
- Linux核心命令使用方法
- 06_常用 Linux 命令的基本使用
- 重新点亮linux 命令树————su和sudo[七]
- Linux命令的返回码列表
- Linux Shell脚本自动化编程实战- shell内置命令 break、continue
- Linux系统调优详解(一)——系统调优概述与Top命令详解
- 30个在开发中常用的linux命令以及linux常用快捷键,比如pwd,which,ls,cd,cat,tail,touch,mkdir,cp,mv,sudo,chown,find,yum,ps等
- Linux netstat命令详解
- 前端常用linux命令
- linux diff命令详解 和 patch命令
- JAVA实现远程SSH连接linux并运行命令
- L83.linux命令每日一练 -- 第11章 Linux系统管理命令 -- ipcs和ipcrm
- L73.linux命令每日一练 -- 第十章 Linux网络管理命令 -- dig和host
- L72.linux命令每日一练 -- 第十章 Linux网络管理命令 -- mail和nslookup
- L67.linux命令每日一练 -- 第十章 Linux网络管理命令 -- netstat和ss
- L52.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- resize2fs和fsck
- L49.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- fdisk和partprobe
- L47.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- users和whoami
- L38.linux命令每日一练 -- 第六章 文件备份与压缩命令 -- zip和unzip
- L36.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- locate和updatedb
- L1.linux命令每日一练 -- 第一章 Linux命令行简介
- linux基本功系列之fdisk命令实战
- linux彻底清除history命令
- Linux命令su和sudo的区别在哪?各有什么用途?