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

参考:
https://blog.csdn.net/linucle/article/details/43967237
https://blog.csdn.net/muyimo/article/details/75259322
https://stackoverflow.com/questions/27340283/how-to-execute-multiple-commands-after-sudo-command

在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值