Shell 中切换用户

发布于 2022-10-15 09:09:39 字数 489 浏览 26 评论 0

我在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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

雨后彩虹 2022-10-22 09:09:39

本帖最后由 cst05001 于 2011-04-19 16:12 编辑

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

要以别的用户身份执行命令应该这么做
su - 用户 -c 命令
或者
sudo -u 用户 命令
如果你不接受这两种办法,那么你说说理由????

同意楼上的,用su - 用户 -c 命令格式来执行

世态炎凉 2022-10-22 09:09:39

sudo就是干这个的

落墨 2022-10-22 09:09:39
  1. localhost ~ # cat switchUser.sh
  2. #!/bin/bash
  3. whoami
  4. su - yanu <<!
  5. whoami
  6. exit
  7. !
  8. whoami
  9. localhost ~ # ./switchUser.sh
  10. root
  11. yanu
  12. root
  13. localhost ~ #

复制代码

最美的太阳 2022-10-22 09:09:39

谢谢楼上各位,特别是yanu!Thanks!

白抽了自己一顿

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文