shell中临时使用其他用户执行命令

问题来源于chinaunix博客论坛,感觉比较实用。整理过来了。


我在root中执行一个脚本,但是其中的一些命令或脚本必须用oracle用户来执行。

#!/bin/sh
。。。。
#----------oracle用户执行
su - oracle  
    /bin/cd /xxxx/xxx
    /bin/rm -rf *

#----------下面的命令需要用root来执行
。。。。。。

现在的现象是执行到su - oracle后,shell变为:
oracle@localhost$
然后脚本不再继续执行,需要手动属于exit才能继续,但是在脚本中加入exit也不好使
请问各位我应该添加点什么?


注:我觉得我不需要sudo或者expect的功能,而且命令较多,不能使用su - oracle -c xxxx


------------------------------------------------------------------解答分割线------------------------------------------------

 su - 之后就直接切换环境并且等待用户的交互式访问了,怎么可能继续执行脚本命令???exit毛,su后的bash是一个子shell,你脚本写1000个exit也没用,这些都要等su这个进程结束后才会执行。

要以别的用户身份执行命令应该这么做
su - 用户 -c 命令 
或者
sudo -u 用户 命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值