【问题标题】:I want to incorporate 'exit' inside a shell script我想在 shell 脚本中加入“退出”
【发布时间】:2018-03-02 00:15:07
【问题描述】:

我有一个从 shell 脚本运行某些东西的代码,运行后它以 root 身份结束

root@(none):/testjob/test#

我想通过shell脚本运行一个命令来退出这个根状态

arnavs@linux-machine:/testjob/test$

你可以手动输入'exit'命令,它会退出到原来的shell,但是如果我在shell脚本中添加exit,它将退出shell脚本本身并停止运行shell脚本。

你能帮我一个命令,我可以将它添加到我的 shell 脚本中吗?

【问题讨论】:

  • 你为什么要在脚本中完全升级为 root?你是在启动屏幕还是什么?
  • 我不这样做。我正在运行一些由 google 开发的测试,这些测试在 uml 上运行并且需要完全升级的 root 访问权限。这是由测试完成的事情
  • 脚本退出后不能让你root。相反,由于某种原因,该脚本正在运行交互式 root shell。在您退出此 shell 之前,脚本不会退出。找出脚本正在运行的哪个命令为您提供交互式 root shell。

标签: bash shell powershell sh


【解决方案1】:

脚本让你成为 root?你是怎样做的? 无论如何,尝试从脚本内部使用logout。 但是,不确定它是否会有所帮助,因为我认为您在脚本和/或系统环境方面遇到了一些问题。

你能告诉我,你的脚本是如何获得超级用户的吗?

【讨论】:

  • 我正在运行这个 if (( $NUMTAPINTERFACES > 0 ));然后 user=${USER:0:10} tapinterfaces= netconfig= for id in $(seq 0 $(( NUMTAPINTERFACES - 1 )) );做 tap=${user}TAP$id tapinterfaces="$tapinterfaces $tap" mac=$(printf fe:fd:00:00:00:%02x $id) netconfig="$netconfig eth$id=tuntap,$ tap,$mac" 在 $tapinterfaces 中为 tap 完成;做如果! ip 链接列表 $tap > /dev/null;然后 echo "Creating tap interface $tap" >&2 sudo tunctl -u $USER -t $tap sudo ip link set $tap up fi done
  • 运行注销给了我-> bash: logout: not login shell: use `exit'
  • @Arnold 在您的脚本中,我只看到两次调用 sudo 而没有其他任何内容,这意味着您的 shell 在运行后无法拥有 root 权限。
  • @Arnold 你能告诉我whoami 是怎么说你当时登录的吗?在你的 shell 中运行 env | grep -e '\(USER\|GROUP\|UID\|GID\)' 来检查你的环境变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 2017-09-20
相关资源
最近更新 更多