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 用户 命令

阅读更多
换一批

没有更多推荐了,返回首页