Linux环境下sudo切换用户后执行其他命令

参考: 
shell不能执行su 后的脚本_shell 不执行 su之后的脚本-CSDN博客 
Linux环境下sudo切换用户后执行其他命令-CSDN博客 
linux - how to execute multiple commands after sudo command - Stack Overflow

在linux下执行shell时,如果有需要切换用户(sudo su - 用户名)后,在执行一些命令行程序,切换后, 
发现后面的命令都不执行了,脚本终止执行,需要手动输入exit才能继续,但是在脚本中加入exit也不好使,

分析: 
a、su – 之后就直接切换环境并且等待用户的交互式访问了,不在继续执行脚本中的命令 
b、su后的bash是一个子shell,脚本里写exit没有用,这些都要等su这个进程结束后才会执行。 
解决方案: su – 用户 -c 命令 
或者 
sudo -u 用户 命令 参考示例: 参考资料: Shell 中切换用户

!/bin/bash 
set -x 
su - oracle << block 
sqlplus /nolog << EOF 
conn hxy/hxy 
create table test1 as select * from dba_tables; 
exit 
EOF 
block

// 或者 
// user1, user2

//此shell在user1下执行 
!/bin/bash

// 需要切换到user2 
sudo su - user2 -c ’ 
// 这里环境变量已经切换成 user2 
whoami env|egrep "USER|MAIL|LOGNAME|PWD" 
// other command 

// 如果单引号 ‘换成 “,则环境变量仍然为 user1 
sudo su - user2 -c ” 
// 这里环境变量是 user1 
whoami env|egrep "USER|MAIL|LOGNAME|PWD" 
// other command 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值