问题来源于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 用户 命令